* 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
196 lines
5.8 KiB
JavaScript
196 lines
5.8 KiB
JavaScript
//
|
|
// The Antville Project
|
|
// http://code.google.com/p/antville
|
|
//
|
|
// Copyright 2001-2007 by The Antville People
|
|
//
|
|
// Licensed under the Apache License, Version 2.0 (the ``License'');
|
|
// you may not use this file except in compliance with the License.
|
|
// You may obtain a copy of the License at
|
|
//
|
|
// http://www.apache.org/licenses/LICENSE-2.0
|
|
//
|
|
// Unless required by applicable law or agreed to in writing, software
|
|
// distributed under the License is distributed on an ``AS IS'' BASIS,
|
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
// See the License for the specific language governing permissions and
|
|
// limitations under the License.
|
|
//
|
|
// $Revision:3337 $
|
|
// $LastChangedBy:piefke3000 $
|
|
// $LastChangedDate:2007-09-21 15:54:30 +0200 (Fri, 21 Sep 2007) $
|
|
// $URL$
|
|
//
|
|
|
|
Skins.prototype.constructor = function(name, parent) {
|
|
this.name = name;
|
|
this.parent = parent;
|
|
return this;
|
|
}
|
|
|
|
Skins.prototype.getPermission = function(action) {
|
|
return res.handlers.layout.getPermission("main");
|
|
}
|
|
|
|
Skins.prototype.getChildElement = function(name) {
|
|
if (this.parent) {
|
|
var group = path[path.length - 1].name;
|
|
var skin = this.getSkin(group, name);
|
|
if (skin) {
|
|
return skin;
|
|
}
|
|
if (global[group] || group === "Global") {
|
|
return this.getSkin(group, name);
|
|
}
|
|
}
|
|
return new Skins(name, this);
|
|
}
|
|
|
|
Skins.prototype.main_action = function() {
|
|
if (!this._parent) {
|
|
res.redirect(res.handlers.layout.skins.href());
|
|
}
|
|
res.data.title = gettext("Custom skins of {0}", this._parent.title);
|
|
res.data.list = this.renderSkinAsString("$Skins#basic");
|
|
res.data.body = this.renderSkinAsString("$Skins#main");
|
|
res.handlers.site.renderSkin("Site#page");
|
|
return;
|
|
}
|
|
|
|
Skins.prototype.getOutline = function(type) {
|
|
var key = "outline:" + type;
|
|
var outline = this.cache[key];
|
|
if (false && outline) {
|
|
return outline;
|
|
}
|
|
|
|
var prototype, skin, subskins, names, skins = [];
|
|
var options = Skin.getPrototypeOptions();
|
|
|
|
for each (var option in options) {
|
|
prototype = option.value;
|
|
names = [];
|
|
for (var name in app.skinfiles[prototype]) {
|
|
if (name === prototype && type !== "custom") {
|
|
skin = createSkin(app.skinfiles[prototype][name]);
|
|
subskins = skin.getSubskinNames();
|
|
for each (var subskin in subskins) {
|
|
names.push(subskin);
|
|
}
|
|
} else if (name !== prototype && type === "custom") {
|
|
names.push(name);
|
|
}
|
|
}
|
|
names.sort();
|
|
skins.push([prototype, names]);
|
|
}
|
|
|
|
res.push();
|
|
for each (var item in skins) {
|
|
prototype = item[0];
|
|
skin = item[1];
|
|
if (skin && skin.length > 0) {
|
|
html.openTag("li");
|
|
html.openTag("a", {href: "#", name: prototype, id: prototype});
|
|
res.write(prototype);
|
|
html.closeTag("a");
|
|
html.openTag("ul");
|
|
for each (var name in skin) {
|
|
subskin = this.getSkin(prototype, name);
|
|
subskin.renderSkin("$Skin#listItem");
|
|
}
|
|
html.closeTag("ul");
|
|
html.closeTag("li");
|
|
}
|
|
}
|
|
return this.cache[key] = res.pop();
|
|
};
|
|
|
|
Skins.prototype.create_action = function() {
|
|
var skin = this.getSkin(req.postParams.prototype, req.postParams.name);
|
|
if (req.postParams.save) {
|
|
try {
|
|
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"));
|
|
} else {
|
|
res.redirect(res.handlers.layout.skins.href("modified"));
|
|
}
|
|
} catch (ex) {
|
|
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 {
|
|
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");
|
|
this.renderSkin("$Skins#page");
|
|
return;
|
|
}
|
|
|
|
Skins.prototype.modified_action = function() {
|
|
res.data.title = gettext("Modified skins of {0}", this._parent.title);
|
|
res.push();
|
|
this.modified.forEach(function() {
|
|
this.renderSkin("$Skin#listItem");
|
|
});
|
|
res.data.list = res.pop();
|
|
res.data.body = this.renderSkinAsString("$Skins#main");
|
|
res.handlers.site.renderSkin("Site#page");
|
|
return;
|
|
}
|
|
|
|
Skins.prototype.advanced_action = function() {
|
|
if (this.parent) {
|
|
res.redirect(res.handlers.layout.skins.href());
|
|
}
|
|
res.data.list = this.getOutline();
|
|
res.data.title = gettext("Skins of {0}", res.handlers.site.title);
|
|
res.data.body = this.renderSkinAsString("$Skins#main");
|
|
res.handlers.site.renderSkin("Site#page");
|
|
return;
|
|
}
|
|
|
|
// FIXME: i'd like to have this by default (ie. always safe)
|
|
Skins.prototype.safe_action = function() {
|
|
res.data.title = gettext("Modified skins of {0}", this._parent.title);
|
|
res.push();
|
|
this.modified.forEach(function() {
|
|
this.renderSkin("$Skin#listItem");
|
|
});
|
|
res.data.list = res.pop();
|
|
res.data.body = this.renderSkinAsString("$Skins#main");
|
|
this.renderSkin("$Skins#page");
|
|
return;
|
|
}
|
|
|
|
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;
|
|
}
|