Commit 1be53614 authored by Xavier Guimard's avatar Xavier Guimard

Replace portal js by coffee (#595)

parent a65e1f6f
......@@ -186,13 +186,17 @@ MANAGERJSONDST=$(SRCMANAGERDIR)/site/static/struct.json \
_example/conf/lmConf-1.js
# Javascript and CSS to minify
JSSRCFILES:=$(shell find */site/static/js $(SRCPORTALDIR)/example -type f -name '*.js' ! -name '*.min.js') \
JSSRCFILES:=$(shell find */site/static/js $(SRCPORTALDIR)/site/htdocs/static/common/js -type f -name '*.js' ! -name '*.min.js') \
$(SRCMANAGERDIR)/site/static/bwr/file-saver.js/FileSaver.js
CSSSRCFILES:=$(shell find */site/static/css $(SRCPORTALDIR)/example -type f -name '*.css' ! -name '*.min.css')
CSSSRCFILES:=$(shell find */site/static/css $(SRCPORTALDIR)/site/htdocs/static/common/css -type f -name '*.css' ! -name '*.min.css')
# Coffee files
COFFEESRCFILES:=$(shell find */site/coffee/ -type f -name '*.coffee')
COFFEEDSTFILES:=$(subst coffee/,static/js/,$(COFFEESRCFILES:.coffee=.js))
MANAGERCOFFEESRCFILES:=$(shell find lemonldap-ng-manager/site/coffee -type f -name '*.coffee')
PORTALCOFFEESRCFILES:=$(shell find lemonldap-ng-portal/site/coffee -type f -name '*.coffee')
COFFEESRCFILES=$(MANAGERCOFFEESRCFILES) $(PORTALCOFFEESRCFILES)
MANAGERCOFFEEDSTFILES:=$(subst coffee/,static/js/,$(MANAGERCOFFEESRCFILES:.coffee=.js))
PORTALCOFFEEDSTFILES:=$(subst coffee/,htdocs/static/common/js/,$(PORTALCOFFEESRCFILES:.coffee=.js))
COFFEEDSTFILES:=$(MANAGERCOFFEEDSTFILES) $(PORTALCOFFEEDSTFILES)
# Minified files
JSDSTFILES=$(JSSRCFILES:.js=.min.js)
......@@ -264,10 +268,10 @@ js: $(COFFEEDSTFILES)
minify: js $(JSDSTFILES) $(CSSDSTFILES)
$(SRCPORTALDIR)/site/static/js/%.js: $(SRCPORTALDIR)/site/coffee/%.coffee
$(SRCPORTALDIR)/site/htdocs/static/common/js/%.js: $(SRCPORTALDIR)/site/coffee/%.coffee
@if which coffee >/dev/null; then \
echo "Compiling $(SRCPORTALDIR)/site/coffee/$*.coffee"; \
coffee -c -o $(SRCPORTALDIR)/site/static/js/ $(SRCPORTALDIR)/site/coffee/$*.coffee; \
coffee -c -o $(SRCPORTALDIR)/site/htdocs/static/common/js/ $(SRCPORTALDIR)/site/coffee/$*.coffee; \
fi
$(SRCMANAGERDIR)/site/static/js/%.js: $(SRCMANAGERDIR)/site/coffee/%.coffee
......
......@@ -97,6 +97,8 @@ ping = ->
else
location.reload true
window.ping = ping
# Initialization
$(document).ready ->
if antiframe and top != self
......
/**
* LemonLDAP::NG Portal jQuery scripts
*/
/* Used variables
* - displaytab
* - choicetab
* - login
* - newwindow
* - antiframe
*/
/* Set newwindow value (default is false) */
if (newwindow.match('1')) {
newwindow = true;
} else {
newwindow = false;
}
/* Set antiframe value (default is true) */
if (antiframe.match('0')) {
antiframe = false;
} else {
antiframe = true;
}
/* Set activeTimer value (default is true) */
if (activeTimer.match('0')) {
activeTimer = false;
} else {
activeTimer = true;
}
/* jQuery */
$(document).ready(function() {
/* AntiFrame script */
if (antiframe && top != self) {
top.location.href = location.href;
}
/* Sortable menu */
$("#appslist").sortable({
axis: "y",
cursor: "move",
opacity: 0.5,
revert: true,
items: "> div.category",
update: function() {
getOrder();
}
});
// Generated by CoffeeScript 1.10.0
restoreOrder();
/*
LemonLDAP::NG Portal jQuery scripts
/* Display message */
$("div.message").fadeIn('slow');
Used variables:
- displaytab
- choicetab
- login
- newwindow
- antiframe
*/
/* Set timezone */
$("input[name=timezone]").val(-(new Date().getTimezoneOffset() / 60));
(function() {
var activeTimer, antiframe, getOrder, isHiddenFormValueSet, newwindow, ping, restoreOrder, setSelector, translate, translatePage,
indexOf = [].indexOf || function(item) { for (var i = 0, l = this.length; i < l; i++) { if (i in this && this[i] === item) return i; } return -1; };
/* Menu tabs */
var menuTabs = $("#menu").tabs({
active: 0
});
var menuIndex = $('#menu a[href="#' + displaytab + '"]').parent().index();
if (menuIndex < 0) {
menuIndex = 0;
}
menuTabs.tabs("option", "active", menuIndex);
/* Authentication choice tabs */
var authMenuTabs = $("#authMenu").tabs({
active: 0
});
// TODO: cookie
//$("#authMenu").tabs({cookie: {name: 'lemonldapauthchoice'}});
if (choicetab) {
var authMenuIndex = $('#authMenu a[href="#' + choicetab + '"]').parent().index();
authMenuTabs.tabs("option", "active", authMenuIndex);
}
/* Focus on first visible input */
$("input[type!=hidden]:first").focus();
if (login) {
$("input[type=password]:first").focus();
}
/* Open links in new windows */
if (newwindow) {
$('#appslist a').attr("target", "_blank");
}
/* Complete removeOther link */
if ($("p.removeOther").length) {
var action = $("form.login").attr("action");
var method = $("form.login").attr("method");
var back_url = "";
if (action.indexOf("?") != -1) {
back_url = action.substring(0, action.indexOf("?")) + "?";
} else {
back_url = action + "?";
}
$("form.login input[type=hidden]").each(function(index) {
back_url = back_url + "&" + $(this).attr("name") + "=" + $(this).val();
translatePage = function(lang) {
return $("[trspan]").each(function() {
return this.text(translate(this.attr('trspan')));
});
};
var link = $("p.removeOther a").attr("href");
link = link + "&method=" + method + "&url=" + $.base64Encode(back_url);
$("p.removeOther a").attr("href", link);
}
});
/* Code from http://snipplr.com/view/29434/ */
// set the list selector
var setSelector = "#appslist";
// function that writes the list order to session
function getOrder() {
// save custom order to persistent session
$.ajax({
type: "POST",
url: scriptname,
data: {
storeAppsListOrder: $(setSelector).sortable("toArray").join()
},
dataType: 'json'
});
}
// function that restores the list order from session
function restoreOrder() {
var list = $(setSelector);
if (list == null) return;
// fetch the session value (saved order)
if (!appslistorder) return;
// make array from saved order
var IDs = appslistorder.split(",");
// fetch current order
var items = list.sortable("toArray");
translate = function(str) {};
// make array from current order
var rebuild = new Array();
for (var v = 0, len = items.length; v < len; v++) {
rebuild[items[v]] = items[v];
}
newwindow = window.newwindow.match('1') ? true : false;
for (var i = 0, n = IDs.length; i < n; i++) {
antiframe = window.antiframe.match('0') ? false : true;
// item id from saved order
var itemID = IDs[i];
activeTimer = window.activeTimer.match('0') ? false : true;
if (itemID in rebuild) {
setSelector = "#appslist";
// select item id from current order
var item = rebuild[itemID];
// select the item according to current order
var child = $(setSelector + ".ui-sortable").children("#" + item);
getOrder = function() {
return $.ajax({
type: "POST",
url: scriptname,
data: {
storeAppsListOrder: $(setSelector).sortable("toArray").join()
},
dataType: 'json'
});
};
// select the item according to the saved order
var savedOrd = $(setSelector + ".ui-sortable").children("#" + itemID);
restoreOrder = function() {
var IDs, child, i, item, itemID, items, j, len, len1, list, rebuild, savedOrd, v;
list = $(setSelector);
if (!((list != null) && appslistorder)) {
return null;
}
IDs = appslistorder.split(',');
items = list.sortable("toArray");
rebuild = [];
for (i = 0, len = items.length; i < len; i++) {
v = items[i];
rebuild[v] = v;
}
for (j = 0, len1 = IDs.length; j < len1; j++) {
itemID = IDs[j];
if (indexOf.call(rebuild, itemID) >= 0) {
item = rebuild[itemID];
child = $(setSelector + ".ui-sortable").children("#" + item);
savedOrd = $(setSelector + ".ui-sortable").children("#" + itemID);
child.remove();
$(setSelector + ".ui-sortable").filter(":first").append(savedOrd);
}
}
return 1;
};
isHiddenFormValueSet = function(option) {
return $('#lmhidden_' + option).length;
};
ping = function() {
return $.ajax({
type: "POST",
url: scriptname,
data: {
ping: 1
},
dataType: 'json',
success: function(data) {
if (data.auth) {
return setTimeout('ping();', pingInterval);
} else {
return location.reload(true);
}
}
});
};
// remove all the items
child.remove();
window.ping = ping;
// add the items in turn according to saved order
// we need to filter here since the "ui-sortable"
// class is applied to all ul elements and we
// only want the very first! You can modify this
// to support multiple lists - not tested!
$(setSelector + ".ui-sortable").filter(":first").append(savedOrd);
$(document).ready(function() {
var action, authMenuTabs, back_url, link, menuIndex, menuTabs, method;
if (antiframe && top !== self) {
top.location.href = location.href;
}
}
}
/* function boolean isHiddenFormValueSet(string option)
* Check if an hidden option is set
* @param option Option name
* @return true if option is set, false else
*/
function isHiddenFormValueSet(option) {
if ($('#lmhidden_' + option).length) {
return true;
} else {
return false;
}
}
/* function void ping()
* Check if session is alive on server side
* @return nothing
*/
function ping() {
$.ajax({
type: "POST",
url: scriptname,
data: {
ping: 1
},
dataType: 'json',
success: function(data) {
if (!data.auth) {
location.reload(true);
$("#appslist").sortable({
axis: "y",
cursor: "move",
opacity: 0.5,
revert: true,
items: "> div.category",
update: function() {
return getOrder();
}
else {
setTimeout('ping();', pingInterval);
});
restoreOrder();
$("div.message").fadeIn('slow');
$("input[name=timezone]").val(-(new Date().getTimezoneOffset() / 60));
menuTabs = $("#menu").tabs({
active: 0
});
menuIndex = $('#menu a[href="#' + displaytab + '"]').parent().index();
if (menuIndex < 0) {
menuIndex = 0;
}
menuTabs.tabs("option", "active", menuIndex);
authMenuTabs = $("#authMenu").tabs({
active: 0
});
if (choicetab) {
authMenuTabs.tabs("option", "active", $('#authMenu a[href="#' + choicetab + '"]').parent().index());
}
if (login) {
$("input[type=password]:first").focus();
} else {
$("input[type!=hidden]:first").focus();
}
if (newwindow) {
$('#appslist a').attr("target", "_blank");
}
if ($("p.removeOther").length) {
action = $("form.login").attr("action");
method = $("form.login").attr("method");
back_url = "";
if (action.indexOf("?") !== -1) {
action.substring(0, action.indexOf("?")) + "?";
} else {
back_url = action + "?";
}
$("form.login input[type=hidden]").each(function(index) {
return back_url += "&" + $(this).attr("name") + "=" + $(this).val();
});
link = $("p.removeOther a").attr("href") + "&method=" + method + "&url=" + btoa(back_url);
$("p.removeOther a").attr("href", link);
}
return translatePage(lang);
});
}
\ No newline at end of file
}).call(this);
if(newwindow.match("1")){newwindow=true}else{newwindow=false}if(antiframe.match("0")){antiframe=false}else{antiframe=true}if(activeTimer.match("0")){activeTimer=false}else{activeTimer=true}$(document).ready(function(){if(antiframe&&top!=self){top.location.href=location.href}$("#appslist").sortable({axis:"y",cursor:"move",opacity:0.5,revert:true,items:"> div.category",update:function(){getOrder()}});restoreOrder();$("div.message").fadeIn("slow");$("input[name=timezone]").val(-(new Date().getTimezoneOffset()/60));var b=$("#menu").tabs({active:0});var e=$('#menu a[href="#'+displaytab+'"]').parent().index();if(e<0){e=0}b.tabs("option","active",e);var a=$("#authMenu").tabs({active:0});if(choicetab){var d=$('#authMenu a[href="#'+choicetab+'"]').parent().index();a.tabs("option","active",d)}$("input[type!=hidden]:first").focus();if(login){$("input[type=password]:first").focus()}if(newwindow){$("#appslist a").attr("target","_blank")}if($("p.removeOther").length){var g=$("form.login").attr("action");var h=$("form.login").attr("method");var c="";if(g.indexOf("?")!=-1){c=g.substring(0,g.indexOf("?"))+"?"}else{c=g+"?"}$("form.login input[type=hidden]").each(function(i){c=c+"&"+$(this).attr("name")+"="+$(this).val()});var f=$("p.removeOther a").attr("href");f=f+"&method="+h+"&url="+$.base64Encode(c);$("p.removeOther a").attr("href",f)}});var setSelector="#appslist";function getOrder(){$.ajax({type:"POST",url:scriptname,data:{storeAppsListOrder:$(setSelector).sortable("toArray").join()},dataType:"json"})}function restoreOrder(){var h=$(setSelector);if(h==null){return}if(!appslistorder){return}var d=appslistorder.split(",");var j=h.sortable("toArray");var k=new Array();for(var l=0,f=j.length;l<f;l++){k[j[l]]=j[l]}for(var e=0,c=d.length;e<c;e++){var a=d[e];if(a in k){var m=k[a];var b=$(setSelector+".ui-sortable").children("#"+m);var g=$(setSelector+".ui-sortable").children("#"+a);b.remove();$(setSelector+".ui-sortable").filter(":first").append(g)}}}function isHiddenFormValueSet(a){if($("#lmhidden_"+a).length){return true}else{return false}}function ping(){$.ajax({type:"POST",url:scriptname,data:{ping:1},dataType:"json",success:function(a){if(!a.auth){location.reload(true)}else{setTimeout("ping();",pingInterval)}}})};
\ No newline at end of file
(function(){var c,d,i,a,g,j,h,e,b,k,f=[].indexOf||function(o){for(var n=0,m=this.length;n<m;n++){if(n in this&&this[n]===o){return n}}return -1};k=function(l){return $("[trspan]").each(function(){return this.text(b(this.attr("trspan")))})};b=function(l){};g=window.newwindow.match("1")?true:false;d=window.antiframe.match("0")?false:true;c=window.activeTimer.match("0")?false:true;e="#appslist";i=function(){return $.ajax({type:"POST",url:scriptname,data:{storeAppsListOrder:$(e).sortable("toArray").join()},dataType:"json"})};h=function(){var n,m,q,y,l,u,p,r,o,t,w,s,x;t=$(e);if(!((t!=null)&&appslistorder)){return null}n=appslistorder.split(",");u=t.sortable("toArray");w=[];for(q=0,r=u.length;q<r;q++){x=u[q];w[x]=x}for(p=0,o=n.length;p<o;p++){l=n[p];if(f.call(w,l)>=0){y=w[l];m=$(e+".ui-sortable").children("#"+y);s=$(e+".ui-sortable").children("#"+l);m.remove();$(e+".ui-sortable").filter(":first").append(s)}}return 1};a=function(l){return $("#lmhidden_"+l).length};j=function(){return $.ajax({type:"POST",url:scriptname,data:{ping:1},dataType:"json",success:function(l){if(l.auth){return setTimeout("ping();",pingInterval)}else{return location.reload(true)}}})};window.ping=j;$(document).ready(function(){var q,m,n,p,o,l,r;if(d&&top!==self){top.location.href=location.href}$("#appslist").sortable({axis:"y",cursor:"move",opacity:0.5,revert:true,items:"> div.category",update:function(){return i()}});h();$("div.message").fadeIn("slow");$("input[name=timezone]").val(-(new Date().getTimezoneOffset()/60));l=$("#menu").tabs({active:0});o=$('#menu a[href="#'+displaytab+'"]').parent().index();if(o<0){o=0}l.tabs("option","active",o);m=$("#authMenu").tabs({active:0});if(choicetab){m.tabs("option","active",$('#authMenu a[href="#'+choicetab+'"]').parent().index())}if(login){$("input[type=password]:first").focus()}else{$("input[type!=hidden]:first").focus()}if(g){$("#appslist a").attr("target","_blank")}if($("p.removeOther").length){q=$("form.login").attr("action");r=$("form.login").attr("method");n="";if(q.indexOf("?")!==-1){q.substring(0,q.indexOf("?"))+"?"}else{n=q+"?"}$("form.login input[type=hidden]").each(function(s){return n+="&"+$(this).attr("name")+"="+$(this).val()});p=$("p.removeOther a").attr("href")+"&method="+r+"&url="+btoa(n);$("p.removeOther a").attr("href",p)}return k(lang)})}).call(this);
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment