[enh] Sort apps alphabeticaly + set app color regarding its name

This commit is contained in:
kload 2015-06-14 12:53:16 +02:00
parent 57f0a4c005
commit cd85f6b740
4 changed files with 22 additions and 15 deletions

View file

@ -28,6 +28,14 @@ function is_in_table (t, v)
end end
-- Get the index of a value in a table
function index_of(t,val)
for k,v in ipairs(t) do
if v == val then return k end
end
end
-- Test whether a string starts with another -- Test whether a string starts with another
function string.starts (String, Start) function string.starts (String, Start)
return string.sub(String, 1, string.len(Start)) == Start return string.sub(String, 1, string.len(Start)) == Start
@ -475,6 +483,8 @@ function get_data_for(view)
app = {} app = {}
} }
local sorted_apps = {}
-- Add user's accessible URLs using the ACLs. -- Add user's accessible URLs using the ACLs.
-- It is typically used to build the app list. -- It is typically used to build the app list.
for url, name in pairs(conf["users"][user]) do for url, name in pairs(conf["users"][user]) do
@ -482,7 +492,9 @@ function get_data_for(view)
if ngx.var.host == conf["local_portal_domain"] then if ngx.var.host == conf["local_portal_domain"] then
url = string.gsub(url, conf["original_portal_domain"], conf["local_portal_domain"]) url = string.gsub(url, conf["original_portal_domain"], conf["local_portal_domain"])
end end
table.insert(data["app"], { url = url, name = name }) table.insert(sorted_apps, name)
table.sort(sorted_apps)
table.insert(data["app"], index_of(sorted_apps, name), { url = url, name = name })
end end
end end

View file

@ -797,7 +797,6 @@ input.btn {
6 = Colors 6 = Colors
========================================================================== */ ========================================================================== */
.listing-apps li:nth-child(1) a,
.bluebg { .bluebg {
background: #3498DB!important; background: #3498DB!important;
} }
@ -808,7 +807,6 @@ input.btn {
background: #16527A!important; background: #16527A!important;
} }
.listing-apps li:nth-child(2) a,
.purplebg { .purplebg {
background: #9B59B6!important; background: #9B59B6!important;
} }
@ -819,7 +817,6 @@ input.btn {
background: #532C64!important; background: #532C64!important;
} }
.listing-apps li:nth-child(3) a,
.redbg { .redbg {
background: #E74C3C!important; background: #E74C3C!important;
} }
@ -830,7 +827,6 @@ input.btn {
background: #921E12!important; background: #921E12!important;
} }
.listing-apps li:nth-child(4) a,
.orangebg { .orangebg {
background: #F39C12!important; background: #F39C12!important;
} }
@ -841,7 +837,6 @@ input.btn {
background: #7F5006!important; background: #7F5006!important;
} }
.listing-apps li:nth-child(5) a,
.greenbg { .greenbg {
background: #2ECC71!important; background: #2ECC71!important;
} }
@ -852,7 +847,6 @@ input.btn {
background: #176437!important; background: #176437!important;
} }
.listing-apps li:nth-child(6) a,
.darkbluebg { .darkbluebg {
background: #34495E!important; background: #34495E!important;
} }
@ -863,7 +857,6 @@ input.btn {
background: #07090C!important; background: #07090C!important;
} }
.listing-apps li:nth-child(7) a,
.lightbluebg { .lightbluebg {
background: #6A93D4!important; background: #6A93D4!important;
} }
@ -874,7 +867,6 @@ input.btn {
background: #2B5394!important; background: #2B5394!important;
} }
.listing-apps li:nth-child(8) a,
.yellowbg { .yellowbg {
background: #F1C40F!important; background: #F1C40F!important;
} }
@ -886,7 +878,6 @@ input.btn {
} }
.listing-apps li:nth-child(9) a,
.lightpinkbg { .lightpinkbg {
background: #F76F87!important; background: #F76F87!important;
} }

View file

@ -2,14 +2,17 @@ document.addEventListener('DOMContentLoaded', function() {
// Variables // Variables
var liMenu = document.querySelectorAll('#apps a') var liMenu = document.querySelectorAll('#apps a')
, colors = ['bluebg','purplebg','redbg','orangebg','greenbg','darkbluebg','lightbluebg','yellowbg','lightpinkbg'] , colors = ['redbg','purpledarkbg','darkbluebg','orangebg','greenbg','darkbluebg','purpledarkbg','yellowbg','lightpinkbg','pinkbg','turquoisebg','yellowbg','lightbluebg','purpledarkbg', 'bluebg']
, addMailAlias = document.getElementById('add-mailalias') , addMailAlias = document.getElementById('add-mailalias')
, addMaildrop = document.getElementById('add-maildrop') , addMaildrop = document.getElementById('add-maildrop')
; ;
liMenu && [].forEach.call(liMenu, function(el, i) { liMenu && [].forEach.call(liMenu, function(el, i) {
// Select a color value from the App label
randomColorNumber = parseInt(el.textContent, 36) % colors.length;
//randomColorNumber = i%colors.length; // Old value
// Add color class. // Add color class.
el.classList.add(colors[i%colors.length]); el.classList.add(colors[randomColorNumber]);
// Set first-letter data attribute. // Set first-letter data attribute.
el.querySelector('.first-letter').setAttribute('data-first-letter',el.textContent.substring(0, 2)); el.querySelector('.first-letter').setAttribute('data-first-letter',el.textContent.substring(0, 2));
}); });
@ -32,4 +35,4 @@ document.addEventListener('DOMContentLoaded', function() {
addMaildrop.parentNode.insertBefore(inputDropClone, addMaildrop); addMaildrop.parentNode.insertBefore(inputDropClone, addMaildrop);
}); });
}); });

View file

@ -219,7 +219,7 @@ domReady(function(){
document.body.insertBefore(overlay, null); document.body.insertBefore(overlay, null);
//Color Application //Color Application
var colors = ['bluebg','purplebg','redbg','orangebg','greenbg','darkbluebg','lightbluebg','yellowbg','lightpinkbg']; var colors = ['redbg','purpledarkbg','darkbluebg','orangebg','greenbg','darkbluebg','purpledarkbg','yellowbg','lightpinkbg','pinkbg','turquoisebg','yellowbg','lightbluebg','purpledarkbg', 'bluebg'];
// Get user's app // Get user's app
var r = new XMLHttpRequest(); var r = new XMLHttpRequest();
@ -245,7 +245,8 @@ domReady(function(){
// Add application links // Add application links
var links = []; var links = [];
Array.prototype.forEach.call(response.app, function(app, n){ Array.prototype.forEach.call(response.app, function(app, n){
links.push('<li><a class="'+colors[n%colors.length]+' disableAjax" href="//'+app.url+'"><span class="first-letter" data-first-letter="'+ app.name.substr(0,2) +'"></span><span class="name">'+app.name+'</span></a></li>'); randomColorNumber = parseInt(app.name, 36) % colors.length;
links.push('<li><a class="'+colors[randomColorNumber]+' disableAjax" href="//'+app.url+'"><span class="first-letter" data-first-letter="'+ app.name.substr(0,2) +'"></span><span class="name">'+app.name+'</span></a></li>');
}); });
overlay.innerHTML += '<div id="yuno-apps" class="wrapper apps"><ul class="listing-apps">'+ links.join("\n") +'</ul></div>'; overlay.innerHTML += '<div id="yuno-apps" class="wrapper apps"><ul class="listing-apps">'+ links.join("\n") +'</ul></div>';