diff --git a/classes/plugin_controller.pike b/classes/plugin_controller.pike
--- a/classes/plugin_controller.pike
+++ b/classes/plugin_controller.pike
@@ -1,73 +1,73 @@
//LOCALE
#define LOCALE(X,Y) Locale.translate(app->config->app_name, id->get_lang(), X, Y)
import Fins;
inherit Fins.DocController;
int __quiet=1;
#define CHECKADMIN() object user = id->misc->session_variables->user; \
if(!app->is_list_master(id->misc->session_variables->user)) \
{response->set_data("You must be an admin user in order to access this function."); return; }
static void start()
{
around_filter(app->mandatory_user_filter);
}
public void index(Request id, Response response, mixed ... args)
{
CHECKADMIN()
response->redirect("list");
}
-public void list(Request id, Response response, mixed ... args)
+public void list(Request id, Response response, object template, mixed ... args)
{
CHECKADMIN()
object t = view->get_view("plugin/list");
app->set_default_data(id, t);
mixed ul = ({});
foreach(sort(indices(app->plugins));; mixed p)
{
ul += ({ (["name": app->plugins[p]->name, "description": app->plugins[p]->description,
"enabled": app->plugins[p]->enabled()]) });
}
t->add("plugins", ul);
response->set_view(t);
}
-public void toggle_enabled(Request id, Response response, mixed ... args)
+public void toggle_enabled(Request id, Response response, object template, mixed ... args)
{
CHECKADMIN()
if(!id->variables->plugin)
{
response->flash("msg", LOCALE(299,"No plugin."));
}
else if(!app->plugins[id->variables->plugin])
{
response->flash("msg", LOCALE(300,"Plugin enumeration failure."));
}
else
{
object p = app->get_sys_pref("plugin." + app->plugins[id->variables->plugin]->name + ".enabled");
p["value"] = !p->get_value();
if(p->get_value())
response->flash("msg", sprintf(LOCALE(301,"Plugin %[0]s enabled."), id->variables->plugin));
else
response->flash("msg", sprintf(LOCALE(302,"Plugin %[0]s disabled."), id->variables->plugin));
}
response->redirect("list");
}
diff --git a/classes/preference_controller.pike b/classes/preference_controller.pike
--- a/classes/preference_controller.pike
+++ b/classes/preference_controller.pike
@@ -1,180 +1,180 @@
//LOCALE
#define LOCALE(X,Y) Locale.translate(app->config->app_name, id->get_lang(), X, Y)
#define CHECKADMIN() object user = id->misc->session_variables->user; \
if(!app->is_list_master(id->misc->session_variables->user)) \
{response->set_data("You must be an admin user in order to access this function."); return; }
import Fins;
import Tools.Logging;
import Fins.Model;
inherit Fins.FinsController;
protected string vtype = "";
int __quiet=1;
static void start()
{
around_filter(app->mandatory_user_filter);
}
protected string get_root(object id)
{
return "";
}
-public void index(Request id, Response response, mixed ... args)
+public void index(Request id, Response response, object template, mixed ... args)
{
CHECKADMIN()
response->redirect("list");
}
-public void tree(Request id, Response response, mixed ... args)
+public void tree(Request id, Response response, object template, mixed ... args)
{
CHECKADMIN()
string pr = get_root(id);
if(id->variables->action && id->variables->action == "getChildren")
{
array data = ({});
mapping d = Tools.JSON.deserialize(id->variables->data);
Log.debug("data: %O\n", d);
array prefixes = ({});
array nodes = ({});
if(d->node && d->node->widgetId && d->node->widgetId == "prefroot")
{
mapping prc = ([]);
if(pr && sizeof(pr)) prc->name = Fins.Model.LikeCriteria(pr + "%");
array x = find.preferences(prc);
foreach(x;;object p)
{
array x = (p["name"][sizeof(pr)..]/".");
prefixes += ({x[0]});
}
prefixes = Array.uniq(prefixes);
prefixes -= ({"", 0});
foreach(prefixes;;string p)
data += ({ (["title": p, "data": p, "widgetId": "tree_" + p, "isFolder": 1 ]) });
}
else if(d->node && d->node->widgetId)
{
array x;
if(!has_prefix(d->node->widgetId[5..], pr?(pr):"")) x = ({});
else x = find.preferences((["name": Fins.Model.LikeCriteria(d->node->widgetId[5..] + "%")]));
int q = sizeof(d->node->widgetId[5..] / ".");
multiset nodesadded = (<>);
foreach(x;;object p)
{
array x1 = p["name"]/".";
if(sizeof(x1)>(q))
{
if(nodesadded[x1[q]]) continue;
prefixes += ({ ({x1[q], (x1[..q] * ".")})});
nodesadded[x1[q]] = 1;
}
else
nodes += ({p});
}
// prefixes = Array.uniq(prefixes);
if(sizeof(prefixes))
foreach(prefixes;; array p)
data += ({ (["title": p[0], "data": p[1], "widgetId": "tree_" + p[1], "isFolder": 1 ]) });
if(sizeof(nodes))foreach(nodes;; object pref)
data += ({ (["title": pref["shortname"], "data": pref["name"], "widgetId": "treepref_" + pref["name"], "isFolder": 0 ]) });
}
response->set_data(Tools.JSON.serialize(data));
response->set_type("text/json");
werror("JSON: %O\n", Tools.JSON.serialize( data ));
}
}
-public void list(Request id, Response response, mixed ... args)
+public void list(Request id, Response response, object template, mixed ... args)
{
CHECKADMIN()
object t;
string pr = get_root(id);
werror("list()\n");
if(id->variables->ajax)
t = view->get_view("prefs/_list");
else
t = view->get_view("prefs/list");
werror("template: %O\n", t);
app->set_default_data(id, t);
mixed ul = ({});
mapping c = ([]);
array prefixes=({});
{
mapping prc = ([]);
if(pr && sizeof(pr)) prc->name = Fins.Model.LikeCriteria(pr + "%");
array x = find.preferences(prc);
foreach(x;;object p)
prefixes += ({ (p["name"][sizeof(pr)..]/".")[0]});
prefixes -= ({"", 0});
prefixes = Array.uniq(prefixes);
}
string startswith = id->variables->startswith;
if(startswith && !has_prefix(startswith, pr))
{
ul = ({});
}
else
{
if(startswith) c->name = Fins.Model.LikeCriteria(startswith + "%");
else if(pr) c->name = Fins.Model.LikeCriteria(pr + "%");
ul = find.preferences(c, Fins.Model.Criteria("ORDER BY Name DESC"));
}
werror("prefixes: %O\n", prefixes);
werror("prefs: %O\n", ul);
if(startswith)
t->add("startswith", (startswith||"")/".");
t->add("prefprefixes", prefixes);
t->add("preferences", ul);
response->set_view(t);
}
-public void set(Request id, Response response, mixed ... args)
+public void set(Request id, Response response, object template, mixed ... args)
{
CHECKADMIN()
mixed e;
if (id->variables->key && id->variables->value && has_prefix(id->variables->key, (string)get_root(id))) {
object pref = app->get_sys_pref(id->variables->key);
if (pref) {
if(pref["type"] == SpeedyDelivery.BOOLEAN)
{
if(lower_case(id->variables->value) == "false" || id->variables->value == "0" || lower_case(id->variables->value) == "no")
pref["value"] = 0;
else
{
pref["value"] = 1;
}
}
else
pref["value"] = id->variables->value;
response->set_data(Tools.JSON.serialize(([ "set" : 1 ])));
response->set_type("text/javascript");
}
}
else {
response->set_data(Tools.JSON.serialize(([ "set" : 0 ])));
response->set_type("text/javascript");
}
if(e) Log.exception("an error occurred while setting a variable.", e);
}