* Fixed and finalized Layout.reset_action() as well as Layout.remove() and Skin.remove() methods
* Completely render skin outline and drop down menu from application directory * Moved remaining skins into protected (ie. non-customizable) skin files * Removed obsolete skin files * Removed obsolete code
This commit is contained in:
parent
dff39778a6
commit
75ff272950
9 changed files with 232 additions and 461 deletions
|
@ -34,34 +34,18 @@ Skins.prototype.getPermission = function(action) {
|
|||
|
||||
Skins.prototype.getChildElement = function(name) {
|
||||
if (this.parent) {
|
||||
var groupName = path[path.length - 1].name;
|
||||
var group = this.parent.get(groupName);
|
||||
if (group) {
|
||||
var skin = group.get(name);
|
||||
if (skin) {
|
||||
return skin;
|
||||
}
|
||||
var group = path[path.length - 1].name;
|
||||
var skin = this.getSkin(group, name);
|
||||
if (skin) {
|
||||
return skin;
|
||||
}
|
||||
if (global[groupName] || groupName === "Global") {
|
||||
return new Skin(groupName, name);
|
||||
if (global[group] || group === "Global") {
|
||||
return this.getSkin(group, name);
|
||||
}
|
||||
}
|
||||
return new Skins(name, this);
|
||||
}
|
||||
|
||||
// FIXME: It's not totally clear why this is necessary;
|
||||
// but somehow Helma does not provide the correct path...
|
||||
// FIXME 2: Probably obsolete thanks to a custom Layout.href() method
|
||||
/*
|
||||
Skins.prototype.href = function(action) {
|
||||
res.push();
|
||||
res.write(res.handlers.site.href());
|
||||
res.write("layout/skins/");
|
||||
action && (res.write(action));
|
||||
return res.pop();
|
||||
}
|
||||
*/
|
||||
|
||||
Skins.prototype.main_action = function() {
|
||||
if (!this._parent) {
|
||||
res.redirect(res.handlers.layout.skins.href());
|
||||
|
@ -112,8 +96,7 @@ Skins.prototype.getOutline = function(type) {
|
|||
html.closeTag("a");
|
||||
html.openTag("ul");
|
||||
for each (var name in skin) {
|
||||
subskin = this.getSkin(prototype, name) ||
|
||||
new Skin(prototype, name);
|
||||
subskin = this.getSkin(prototype, name);
|
||||
subskin.renderSkin("$Skin#listItem");
|
||||
}
|
||||
html.closeTag("ul");
|
||||
|
@ -124,13 +107,13 @@ Skins.prototype.getOutline = function(type) {
|
|||
};
|
||||
|
||||
Skins.prototype.create_action = function() {
|
||||
var skin = new Skin(req.data.prototype, req.data.name);
|
||||
var skin = this.getSkin(req.postParams.prototype, req.postParams.name);
|
||||
if (req.postParams.save) {
|
||||
try {
|
||||
if (!skin.equals(req.postParams.source)) {
|
||||
skin.setSource(req.postParams.source);
|
||||
this.add(skin);
|
||||
if (!req.postParams.prototype || !req.postParams.name) {
|
||||
throw Error("Please choose a prototype and enter a skin name");
|
||||
}
|
||||
skin.update(req.postParams);
|
||||
res.message = gettext("The changes were saved successfully.");
|
||||
if (req.postParams.save == 1) {
|
||||
res.redirect(skin.href("edit"));
|
||||
|
@ -141,14 +124,13 @@ Skins.prototype.create_action = function() {
|
|||
res.message = ex;
|
||||
app.log(ex);
|
||||
}
|
||||
}
|
||||
if (skin.getSource()) {
|
||||
res.data.title = gettext("Edit skin {0}.{1} of {2}",
|
||||
skin.prototype, skin.name, res.handlers.site.title);
|
||||
} else {
|
||||
if (skin.getSource()) {
|
||||
res.data.title = gettext("Edit skin {0}.{1} of {2}",
|
||||
skin.prototype, skin.name, res.handlers.site.title);
|
||||
} else {
|
||||
res.data.title = gettext('Create a custom skin of {0}',
|
||||
res.handlers.site.title);
|
||||
}
|
||||
res.data.title = gettext('Create a custom skin of {0}',
|
||||
res.handlers.site.title);
|
||||
}
|
||||
res.data.action = this.href(req.action);
|
||||
res.data.body = skin.renderSkinAsString("$Skin#edit");
|
||||
|
@ -192,218 +174,23 @@ Skins.prototype.safe_action = function() {
|
|||
return;
|
||||
}
|
||||
|
||||
Skins.prototype.getSkin = function(prototype, name) {
|
||||
var skinset = this.get(prototype);
|
||||
return skinset ? skinset.get(name) : null;
|
||||
}
|
||||
|
||||
Skins.prototype.getSkinSource = function(proto, name) {
|
||||
var skin;
|
||||
if (skin = this.getSkin(proto, name)) {
|
||||
return skin.getSource();
|
||||
}
|
||||
if (app.skinfiles[proto]) {
|
||||
return app.skinfiles[proto][name];
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
Skins.prototype.getOriginalSkin = function(proto, name) {
|
||||
var skin;
|
||||
var layout = this._parent;
|
||||
while (layout = layout.parent) {
|
||||
if (skin = layout.skins.getSkin(proto, name)) {
|
||||
Skins.prototype.getSkin = function(group, name) {
|
||||
var skinSet = path.layout.skins.get(group);
|
||||
if (skinSet) {
|
||||
var skin = skinSet.get(name);
|
||||
if (skin) {
|
||||
return skin;
|
||||
}
|
||||
}
|
||||
return new Skin(group, name);
|
||||
}
|
||||
|
||||
Skins.remove = function(skins) {
|
||||
skins || (skins = this);
|
||||
if (skins.constructor === Skins) {
|
||||
while (skins.size() > 0) {
|
||||
HopObject.remove(skins.get(0));
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
Skins.prototype.getOriginalSkinSource = function(proto, name) {
|
||||
var skin;
|
||||
if (skin = this.getOriginalSkin(proto, name)) {
|
||||
return skin.getSource();
|
||||
}
|
||||
if (app.skinfiles[proto]) {
|
||||
return app.skinfiles[proto][name];
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
Skins.prototype.getCustomSkins = function() {
|
||||
var coll = [];
|
||||
// object to store the already added skin keys
|
||||
// used to avoid duplicate skins in the list
|
||||
var keys = {};
|
||||
|
||||
// private method to add a custom skin
|
||||
var addSkins = function(mgr) {
|
||||
var size = mgr.custom.size();
|
||||
for (var i=0;i<size;i++) {
|
||||
var s = mgr.custom.get(i);
|
||||
var key = s.proto + ":" + s.name;
|
||||
if (!keys[key]) {
|
||||
keys[key] = s;
|
||||
coll.push(s);
|
||||
}
|
||||
}
|
||||
}
|
||||
var handler = this._parent;
|
||||
while (handler) {
|
||||
addSkins(handler.skins);
|
||||
handler = handler.parent;
|
||||
}
|
||||
return coll;
|
||||
}
|
||||
|
||||
Skins.getSummary = function(prefix, prototype, name) {
|
||||
return gettext("Description of skin {0}", prototype + "." + name);
|
||||
var key = prefix + "." + prototype;
|
||||
name && (key += "." + name);
|
||||
var languages = new Array("en");
|
||||
var syslang;
|
||||
if ((syslang = root.getLocale().getLanguage()) != "en")
|
||||
languages.unshift(syslang);
|
||||
if (res.handlers.site) {
|
||||
var lang = res.handlers.site.getLocale().getLanguage();
|
||||
if (lang != "en" && lang != syslang)
|
||||
languages.unshift(lang);
|
||||
}
|
||||
var lang;
|
||||
for (var i=0; i<languages.length; i+=1) {
|
||||
if (!(lang = app.data[languages[i]])) {
|
||||
continue;
|
||||
}
|
||||
if (lang.getProperty(key)) {
|
||||
return lang.getProperty(key).split("|");
|
||||
}
|
||||
}
|
||||
return [prototype + "." + name];
|
||||
}
|
||||
|
||||
Skins.Skinset = function(key, skins, context) {
|
||||
this.key = key;
|
||||
this.skins = skins;
|
||||
this.context = context;
|
||||
this.children = [];
|
||||
this.add = function(obj) {
|
||||
this.children.push(obj);
|
||||
}
|
||||
return this;
|
||||
}
|
||||
|
||||
Skins.SKINSETS = [];
|
||||
|
||||
new function() {
|
||||
var newSet = new Skins.Skinset("Root", ["Root.page", "Root.main", "Root.style", "Root.javascript", "Root.sysmgrnavigation", "Root.new"], "Root");
|
||||
newSet.add(new Skins.Skinset("Root.scripts", ["Root.systemscripts", "Global.colorpickerScripts"]));
|
||||
newSet.add(new Skins.Skinset("Root.sitelist", ["Site.preview", "Root.list"]));
|
||||
newSet.add(new Skins.Skinset("Root.rss", ["Root.rss", "Site.rssItem", "Site.rssResource", "Global.rssImage"]));
|
||||
newSet.add(new Skins.Skinset("Root.colorpicker", ["Global.colorpicker", "Global.colorpickerExt", "Global.colorpickerWidget", "Global.colorpickerScripts"]));
|
||||
newSet.add(new Skins.Skinset("Root.welcome", ["Site.welcome", "Site.welcomeowner", "Site.welcomesysadmin", "Root.welcome"]));
|
||||
newSet.add(new Skins.Skinset("Root.various", ["Root.blocked", "Root.notfound", "Root.sysError"]));
|
||||
Skins.SKINSETS.push(newSet);
|
||||
|
||||
newSet = new Skins.Skinset("Site", ["Site.page", "Site.style", "Site.javascript", "Site.main", "Day.main", "Story.dayheader"]);
|
||||
newSet.add(new Skins.Skinset("Site.navigation", ["Site.contribnavigation", "Site.adminnavigation", "Global.nextpagelink", "Global.prevpagelink", "Global.pagenavigation", "Global.pagenavigationitem", "Members.statusloggedin", "Members.statusloggedout"]));
|
||||
newSet.add(new Skins.Skinset("Site.topics", ["TopicMgr.main", "Topic.main"]));
|
||||
newSet.add(new Skins.Skinset("Site.calendar", ["Site.calendar", "Site.calendardayheader", "Site.calendarweek", "Site.calendarday", "Site.calendarselday"]));
|
||||
newSet.add(new Skins.Skinset("Site.rss", ["Site.rss", "Story.rssItem", "Story.rssResource"]));
|
||||
newSet.add(new Skins.Skinset("Site.search", ["Site.searchresult", "Site.searchbox", "Story.searchview"]));
|
||||
newSet.add(new Skins.Skinset("Site.referrers", ["Site.referrers", "Site.referrerItem"]));
|
||||
newSet.add(new Skins.Skinset("Site.mostread", ["Site.mostread", "Story.mostread"]));
|
||||
newSet.add(new Skins.Skinset("Site.mails", ["Members.mailregconfirm", "Members.mailpassword", "Members.mailnewmember", "Membership.mailstatuschange", "Membership.mailmessage", "Site.notificationMail"], "Root"));
|
||||
newSet.add(new Skins.Skinset("Site.preferences", ["Site.edit", "Site.notification"], "Root"));
|
||||
newSet.add(new Skins.Skinset("Site.user", ["Members.login", "Members.register", "Members.sendpwd", "User.edit", "User.sitelist", "User.subscriptions", "Membership.subscriptionlistitem"], "Root"));
|
||||
newSet.add(new Skins.Skinset("Site.members", ["Members.main", "Members.new", "Members.membergroup", "Members.searchresult", "Members.searchresultitem", "Membership.mgrlistitem", "Membership.edit"], "Root"));
|
||||
newSet.add(new Skins.Skinset("Site.various", ["Site.robots"]));
|
||||
Skins.SKINSETS.push(newSet);
|
||||
|
||||
newSet = new Skins.Skinset("Story", ["Story.display", "Story.main", "Story.preview", "Story.comment", "Story.historyview", "Story.embed", "Story.edit"]);
|
||||
newSet.add(new Skins.Skinset("Story.backlinks", ["Story.backlinks", "Story.backlinkItem"]));
|
||||
newSet.add(new Skins.Skinset("Story.list", ["StoryMgr.main", "Story.mgrlistitem"]));
|
||||
Skins.SKINSETS.push(newSet);
|
||||
|
||||
newSet = new Skins.Skinset("Comment", ["Comment.toplevel", "Comment.reply", "Comment.edit"]);
|
||||
Skins.SKINSETS.push(newSet);
|
||||
|
||||
newSet = new Skins.Skinset("Image", ["Image.main", "Image.edit", "ImageMgr.new", "LayoutImage.edit", "ImageMgr.main", "Image.mgrlistitem"]);
|
||||
Skins.SKINSETS.push(newSet);
|
||||
|
||||
newSet = new Skins.Skinset("File", ["File.main", "File.edit", "FileMgr.new", "FileMgr.main", "File.mgrlistitem"]);
|
||||
Skins.SKINSETS.push(newSet);
|
||||
|
||||
newSet = new Skins.Skinset("Poll", ["Poll.main", "Poll.results", "Choice.main", "Choice.result", "Choice.graph"]);
|
||||
newSet.add(new Skins.Skinset("Poll.editor", ["Poll.edit", "Choice.edit"]));
|
||||
newSet.add(new Skins.Skinset("Poll.list", ["PollMgr.main", "Poll.mgrlistitem"]));
|
||||
Skins.SKINSETS.push(newSet);
|
||||
|
||||
newSet = new Skins.Skinset("SysMgr", ["SysMgr.status", "SysMgr.list", "Site.sysmgr_listitem", "Site.sysmgr_edit", "Site.sysmgr_delete", "User.sysmgr_listitem", "User.sysmgr_edit", "SysLog.sysmgr_listitem"], "Root");
|
||||
newSet.add(new Skins.Skinset("SysMgr.forms", ["SysMgr.setup", "SysMgr.sitesearchform", "SysMgr.usersearchform", "SysMgr.syslogsearchform"]));
|
||||
newSet.add(new Skins.Skinset("SysMgr.mails", ["SysMgr.blockwarnmail", "SysMgr.deletewarnmail"]));
|
||||
Skins.SKINSETS.push(newSet);
|
||||
|
||||
newSet = new Skins.Skinset("SkinMgr", ["SkinMgr.main", "SkinMgr.page", "SkinMgr.edit", "SkinMgr.treebranch", "SkinMgr.treeleaf", "Skin.status", "Skin.statuscustom", "SkinMgr.new", "Skin.diff", "Skin.diffline"], "Root");
|
||||
Skins.SKINSETS.push(newSet);
|
||||
|
||||
newSet = new Skins.Skinset("LayoutMgr", ["LayoutMgr.main", "LayoutMgr.new", "LayoutMgr.import"], "Root");
|
||||
newSet.add(new Skins.Skinset("LayoutMgr.layout", ["Layout.mgrlistitem", "Layout.main", "Layout.edit", "Layout.download", "Layout.chooserlistitem", "Layout.testdrive"]));
|
||||
newSet.add(new Skins.Skinset("LayoutMgr.images", ["LayoutImageMgr.main", "LayoutImageMgr.navigation", "LayoutImageMgr.new"]));
|
||||
Skins.SKINSETS.push(newSet);
|
||||
|
||||
newSet = new Skins.Skinset("various", ["HopObject.delete"], "Root");
|
||||
Skins.SKINSETS.push(newSet);
|
||||
}
|
||||
|
||||
Skins.buildMacroHelp = function() {
|
||||
var sorter = function(a, b) {
|
||||
var str1 = a.name.toLowerCase();
|
||||
var str2 = b.name.toLowerCase();
|
||||
if (str1 > str2)
|
||||
return 1;
|
||||
else if (str1 < str2)
|
||||
return -1;
|
||||
return 0;
|
||||
}
|
||||
|
||||
var macroHelp = {};
|
||||
var ref = macroHelp.Global = [];
|
||||
var macrolist = HELP.macros.Global;
|
||||
for (var i in macrolist)
|
||||
ref.push({name: i, storyid: macrolist[i]});
|
||||
ref.sort(sorter);
|
||||
|
||||
var ref = macroHelp.HopObject = [];
|
||||
var macrolist = HELP.macros.HopObject;
|
||||
for (var i in macrolist)
|
||||
ref.push({name: i, storyid: macrolist[i]});
|
||||
ref.sort(sorter);
|
||||
|
||||
for (var proto in HELP.macros) {
|
||||
if (proto.indexOf("_") == 0 || proto == "Global" || proto == "HopObject")
|
||||
continue;
|
||||
var macrolist = HELP.macros[proto];
|
||||
var ref = macroHelp[proto] = [];
|
||||
var keys = "";
|
||||
for (var i in macrolist) {
|
||||
ref.push({name: i, storyid: macrolist[i]});
|
||||
keys += i + ",";
|
||||
}
|
||||
for (var n in macroHelp.HopObject) {
|
||||
var shared = macroHelp.HopObject[n];
|
||||
if (keys.indexOf(shared.name + ",") < 0)
|
||||
ref.push(shared);
|
||||
}
|
||||
ref.sort(sorter);
|
||||
}
|
||||
return macroHelp;
|
||||
}
|
||||
|
||||
Skins.remove = function() {
|
||||
if (this.constructor === Skins) {
|
||||
this.forEach(function() {
|
||||
HopObject.remove(this);
|
||||
});
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue