Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/diaspora/diaspora.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'app/assets/javascripts/mobile/publisher.js')
-rw-r--r--app/assets/javascripts/mobile/publisher.js70
1 files changed, 70 insertions, 0 deletions
diff --git a/app/assets/javascripts/mobile/publisher.js b/app/assets/javascripts/mobile/publisher.js
index 9bac0f0bf..b7d566452 100644
--- a/app/assets/javascripts/mobile/publisher.js
+++ b/app/assets/javascripts/mobile/publisher.js
@@ -48,4 +48,74 @@ $(document).ready(function(){
});
new Diaspora.MarkdownEditor("#status_message_text");
+
+ $(".dropdown-menu > li").bind("tap click", function(evt) {
+ let target = $(evt.target).closest("li");
+
+ // visually toggle the aspect selection
+ if (target.is(".radio")) {
+ _toggleRadio(target);
+ } else if (target.is(".aspect-selector")) {
+ // don't close the dropdown
+ evt.stopPropagation();
+ _toggleCheckbox(target);
+ }
+
+ _updateSelectedAspectIds();
+ _updateButton();
+
+ // update the globe or lock icon
+ let icon = $("#visibility-icon");
+ if (target.find(".text").text().trim() === Diaspora.I18n.t("stream.public")) {
+ icon.removeClass("entypo-lock");
+ icon.addClass("entypo-globe");
+ } else {
+ icon.removeClass("entypo-globe");
+ icon.addClass("entypo-lock");
+ }
+ });
+
+ function _toggleRadio(target) {
+ $(".dropdown-menu > li").removeClass("selected");
+ target.toggleClass("selected");
+ }
+
+ function _toggleCheckbox(target) {
+ $(".dropdown-menu > li.radio").removeClass("selected");
+ target.toggleClass("selected");
+ }
+
+ // take care of the form fields that will indicate the selected aspects
+ function _updateSelectedAspectIds() {
+ let form = $("#new_status_message");
+
+ // remove previous selection
+ form.find('input[name="aspect_ids[]"]').remove();
+
+ // create fields for current selection
+ form.find(".dropdown-menu > li.selected").each(function() {
+ let uid = _.uniqueId("aspect_ids_");
+ let id = $(this).data("aspect_id");
+ form.append('<input id="' + uid + '" name="aspect_ids[]" type="hidden" value="' + id + '">');
+ });
+ }
+
+ // change class and text of the dropdown button
+ function _updateButton() {
+ let button = $(".btn.dropdown-toggle"),
+ selectedAspects = $(".dropdown-menu > li.selected").length,
+ buttonText;
+
+ switch (selectedAspects) {
+ case 0:
+ buttonText = Diaspora.I18n.t("aspect_dropdown.select_aspects");
+ break;
+ case 1:
+ buttonText = $(".dropdown-menu > li.selected .text").first().text();
+ break;
+ default:
+ buttonText = Diaspora.I18n.t("aspect_dropdown.toggle", {count: selectedAspects.toString()});
+ }
+ button.find(".text").text(buttonText);
+ }
});