X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=view%2Ftheme%2Ffrio%2Fjs%2Fmodal.js;h=82b1ebdb919db133baade1a63cf15efc32f9e09e;hb=7c9a0ec4594fa6d45cc615f8bde914bcc131226d;hp=973847509e7371416909a436fb99ab76dbe5d566;hpb=f8c62f04079fba8795a83771c5c3615e233ba5ca;p=friendica.git diff --git a/view/theme/frio/js/modal.js b/view/theme/frio/js/modal.js index 973847509e..82b1ebdb91 100644 --- a/view/theme/frio/js/modal.js +++ b/view/theme/frio/js/modal.js @@ -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,6 +62,11 @@ $(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(){ @@ -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,6 +139,7 @@ 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 @@ -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!=="") { @@ -184,6 +204,19 @@ function addToModal(url) { }); } +// 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 function editpost(url) { @@ -201,15 +234,15 @@ function editpost(url) { } var modal = $('#jot-modal').modal(); - 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); + } +}