Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Hide "save to tiddlyhost" button if user is not logged in for Classic #328

Merged
merged 2 commits into from
Jun 16, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
48 changes: 27 additions & 21 deletions rails/lib/th_file.rb
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,18 @@ def strip_external_core_url_prefix
self
end

def apply_tw5_mods(site_name, for_download: false, local_core: false, use_put_saver: false, is_logged_in: false)
# Determine if we think the user could make changes and save.
# (Used in the `TiddlyHostIsLoggedIn` tiddler for Classic and
# the `$:/status/IsLoggedIn` tiddler for TW5.)
def status_is_logged_in(is_logged_in: false, for_download: false)
if is_logged_in && !for_download
'yes'
else
'no'
end
end

def apply_tw5_mods(site_name, for_download:, local_core:, use_put_saver:, is_logged_in:)
upload_url = if for_download || use_put_saver
# Clear $:/UploadURL for downloads so the save button in the downloaded
# file will not try to use upload.js. It should use another save
Expand All @@ -72,17 +83,6 @@ def apply_tw5_mods(site_name, for_download: false, local_core: false, use_put_sa
Settings.subdomain_site_url(site_name)
end

if !for_download && is_logged_in
# Provide a way for TiddlyWiki files to detect when
# they're being viewed by their owner
status_is_logged_in = 'yes'

else
# The readonly plugin might user this to hide tiddler edit buttons, etc.
status_is_logged_in = 'no'

end

write_tiddlers({
# TiddlyWiki will POST to this url using code in core/modules/savers/upload.js
'$:/UploadURL' => upload_url,
Expand All @@ -93,7 +93,7 @@ def apply_tw5_mods(site_name, for_download: false, local_core: false, use_put_sa
'$:/UploadWithUrlOnly' => 'yes',

# Provide a way for TiddlyWikis to detect when they're able to be saved
'$:/status/IsLoggedIn' => status_is_logged_in,
'$:/status/IsLoggedIn' => status_is_logged_in(is_logged_in:, for_download:),
})

# Since every save uploads the entire TiddlyWiki I want to discourage
Expand All @@ -115,7 +115,7 @@ def apply_tw5_mods(site_name, for_download: false, local_core: false, use_put_sa
end
end

def apply_classic_mods(site_name)
def apply_classic_mods(site_name, for_download:, is_logged_in:)
# We don't want to hard code the site url in the plugin, but we also don't
# want to hard code the domain name and port etc since they're different
# in different environments. This is clever way to deal with that.
Expand All @@ -129,24 +129,30 @@ def apply_classic_mods(site_name)
}
})

# This could be a regular tiddler, but let's make it a shadow tiddler just to be cool.
# Will be clickable when viewing the plugin since we used 'TiddlyHost' as the modifier above.
# (I'm using camel case intentionally here despite the usual spelling of Tiddlyhost.)
write_shadow_tiddlers({
# This could be a regular tiddler, but let's make it a shadow tiddler just to be cool.
# Will be clickable when viewing the plugin since we used 'TiddlyHost' as the modifier above.
# (I'm using camel case intentionally here despite the usual spelling of Tiddlyhost.)
'TiddlyHost' => {
text: "[[Tiddlyhost|#{Settings.main_site_url}]] is a hosting service for ~TiddlyWiki.",
modifier: 'TiddlyHost',
}
},

# Used in the ThostUploadPlugin to ensure we don't render in readonly mode
# and to show the 'save to tiddlyhost' button
'TiddlyHostIsLoggedIn' => {
text: status_is_logged_in(is_logged_in:, for_download:),
modifier: 'TiddlyHost',
},
})
end

def apply_tiddlyhost_mods(site_name, for_download: false, local_core: false, use_put_saver: false, is_logged_in: false)
if is_tw5?
apply_tw5_mods(site_name,
for_download: for_download, local_core: local_core, use_put_saver: use_put_saver, is_logged_in: is_logged_in)
apply_tw5_mods(site_name, for_download:, local_core:, use_put_saver:, is_logged_in:)

elsif is_classic?
apply_classic_mods(site_name)
apply_classic_mods(site_name, for_download:, is_logged_in:)

else # FeatherWiki
# No hackery for FeatherWiki currently
Expand Down
21 changes: 13 additions & 8 deletions rails/tw_content/plugins/thost_upload_plugin.js.erb
Original file line number Diff line number Diff line change
Expand Up @@ -192,13 +192,18 @@ bidix.initOption('txtThostSiteName','<%= site_name %>');
// Tiddlyhost stuff
//

// So you can see edit controls via http
config.options.chkHttpReadOnly = false;
window.readOnly = false;
window.showBackstage = true;

// Add 'upload to tiddlyhost' button
config.shadowTiddlers.SideBarOptions = config.shadowTiddlers.SideBarOptions
.replace(/(<<saveChanges>>)/,"$1<<thostUpload>>");
if (config.shadowTiddlers.TiddlyHostIsLoggedIn == "yes") {
// If user is logged in to Tiddlyhost and viewing their own site then
// we disregard the original value of the chkHttpReadOnly cookie
config.options.chkHttpReadOnly = false
// window.readOnly gets set before plugins are loaded, so we need to
// set it here to make sure TW is editable, unlike window.showBackstage
// which is set after
window.readOnly = false

// Add the 'save to tiddlyhost' button after the regular save button
config.shadowTiddlers.SideBarOptions = config.shadowTiddlers.SideBarOptions
.replace(/(<<saveChanges>>)/,"$1<<thostUpload>>");
}

//}}}