X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=view%2Ftheme%2Ffrio%2Fjs%2Fmodal.js;h=82b1ebdb919db133baade1a63cf15efc32f9e09e;hb=7c9a0ec4594fa6d45cc615f8bde914bcc131226d;hp=f1efbd752e56fbcaba340731d672e58c1d90dcac;hpb=871fa4c777a9ede2bcd9189f2790e947144b7382;p=friendica.git diff --git a/view/theme/frio/js/modal.js b/view/theme/frio/js/modal.js index f1efbd752e..82b1ebdb91 100644 --- a/view/theme/frio/js/modal.js +++ b/view/theme/frio/js/modal.js @@ -19,7 +19,7 @@ $(document).ready(function(){ // restore cached jot at its hidden position ("#jot-content") $("#jot-content").append(jotcache); // clear the jotcache - jotcache = '' + jotcache = ''; }); // Add Colorbox for viewing Network page images @@ -50,7 +50,11 @@ $(document).ready(function(){ } }); - + // Navbar login + $("body").on("click", "#nav-login", function(e){ + e.preventDefault(); + Dialog.show(this.href, this.dataset.originalTitle || this.title); + }); // Jot nav menu. $("body").on("click", "#jot-modal .jot-nav li a", function(e){ @@ -58,9 +62,14 @@ $(document).ready(function(){ toggleJotNav(this); }); + // bookmarklet page needs an jot modal which appears automatically + if(window.location.pathname.indexOf("/bookmarklet") >=0 && $("#jot-modal").length){ + jotShow(); + } + // Open filebrowser for elements with the class "image-select" // The following part handles the filebrowser for field_fileinput.tpl - $("body").on("click", ".image-select", function(e){ + $("body").on("click", ".image-select", function(){ // set a extra attribute to mark the clicked button this.setAttribute("image-input", "select"); Dialog.doImageBrowser("input"); @@ -69,7 +78,7 @@ $(document).ready(function(){ // Insert filebrowser images into the input field (field_fileinput.tpl) $("body").on("fbrowser.image.input", function(e, filename, embedcode, id, img) { // select the clicked button by it's attribute - var elm = $("[image-input='select']") + var elm = $("[image-input='select']"); // select the input field which belongs to this button var input = elm.parent(".input-group").children("input"); // remove the special indicator attribut from the button @@ -81,8 +90,9 @@ $(document).ready(function(){ }); // overwrite Dialog.show from main js to load the filebrowser into a bs modal -Dialog.show = function(url) { +Dialog.show = function(url, title="") { var modal = $('#modal').modal(); + modal.find("#modal-header h4").html(title); modal .find('#modal-body') .load(url, function (responseText, textStatus) { @@ -129,12 +139,13 @@ Dialog._load = function(url) { // try to fetch the hash form the url var match = url.match(/fbrowser\/[a-z]+\/\?mode=none(.*)/); + if (match===null) return; //not fbrowser var hash = match[1]; // initialize the filebrowser var jsbrowser = function() { FileBrowser.init(nickname, type, hash); - } + }; loadScript("view/theme/frio/js/filebrowser.js", jsbrowser); }; @@ -147,13 +158,22 @@ Dialog._load = function(url) { */ function loadModalTitle() { // clear the text of the title - //$("#modal-title").empty(); + $("#modal-title").empty(); // hide the first element with the class "heading" of the modal body $("#modal-body .heading").first().hide(); + var title = ""; + // get the text of the first element with "heading" class - var title = $("#modal-body .heading").first().text(); + title = $("#modal-body .heading").first().text(); + + // for event modals we need some speacial handling + if($("#modal-body .event-wrapper .event-summary").length) { + title = ' '; + var eventsum = $("#modal-body .event-wrapper .event-summary").text(); + title = title + eventsum; + } // and append it to modal title if (title!=="") { @@ -166,7 +186,7 @@ function loadModalTitle() { function addToModal(url) { var char = qOrAmp(url); - var url = url + char + 'mode=none'; + url = url + char + 'mode=none'; var modal = $('#modal').modal(); modal @@ -182,7 +202,20 @@ function addToModal(url) { loadModalTitle(); } }); -}; +} + +// Add a element (by it's id) to a bootstrap modal +function addElmToModal(id) { + var elm = $(id).html(); + var modal = $('#modal').modal(); + + modal + .find('#modal-body') + .append(elm) + .modal.show; + + loadModalTitle(); +} // function to load the html from the edit post page into // the jot modal @@ -201,15 +234,15 @@ function editpost(url) { } var modal = $('#jot-modal').modal(); - var url = url + " #profile-jot-form"; + url = url + " #jot-sections"; //var rand_num = random_digits(12); - $(".jot-nav #jot-perms-lnk").parent("li").hide(); + $(".jot-nav .jot-perms-lnk").parent("li").addClass("hidden"); - // For editpost we load the modal html form the edit page. So we would have two jot forms in + // For editpost we load the modal html of "jot-sections" of the edit page. So we would have two jot forms in // the page html. To avoid js conflicts we store the original jot in the variable jotcache. // After closing the modal original jot should be restored at its orginal position in the html structure. - jotcache = $("#jot-content > #profile-jot-form"); + jotcache = $("#jot-content > #jot-sections"); // remove the original Jot as long as the edit Jot is open jotcache.remove(); @@ -221,7 +254,7 @@ function editpost(url) { jotreset(); modal - .find('#jot-modal-body') + .find('#jot-modal-content') .load(url, function (responseText, textStatus) { if ( textStatus === 'success' || textStatus === 'notmodified') @@ -247,7 +280,7 @@ function jotreset() { // We need this to prevent that the modal displays old content $('body').on('hidden.bs.modal', '#jot-modal.edit-jot', function () { $(this).removeData('bs.modal'); - $(".jot-nav #jot-perms-lnk").parent("li").show(); + $(".jot-nav .jot-perms-lnk").parent("li").removeClass("hidden"); $("#profile-jot-form #jot-title-wrap").show(); $("#profile-jot-form #jot-category-wrap").show(); @@ -261,15 +294,31 @@ function jotreset() { // remove the "edit-jot" class so we can the standard behavior on close $("#jot-modal.edit-jot").removeClass("edit-jot"); - $("#jot-modal-body").empty(); + $("#jot-modal-content").empty(); }); } // Give the active "jot-nav" list element the class "active" function toggleJotNav (elm) { // select all li of jot-nav and remove the active class - $(elm).closest(".jot-nav").children("li").removeClass("active"); + $(".jot-nav li").removeClass("active"); // add the active class to the parent of the link which was selected $(elm).parent("li").addClass("active"); } +// Wall Message needs a special handling because in some cases +// it redirects you to your own server. In such cases we can't +// load it into a modal +function openWallMessage(url) { + // split the the url in its parts + var parts = parseUrl(url); + + // If the host isn't the same we can't load it in a modal. + // So we will go to to the url directly + if( ("host" in parts) && (parts.host !== window.location.host)) { + window.location.href = url; + } else { + // otherwise load the wall message into a modal + addToModal(url); + } +}