summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--classes/dlg.php240
-rw-r--r--classes/pref/feeds.php52
-rw-r--r--classes/pref/prefs.php147
-rw-r--r--js/prefs.js6
-rw-r--r--plugins/instances/init.php49
-rw-r--r--plugins/instances/instances.js2
6 files changed, 250 insertions, 246 deletions
diff --git a/classes/dlg.php b/classes/dlg.php
index 75cbbd74d..e56560a47 100644
--- a/classes/dlg.php
+++ b/classes/dlg.php
@@ -42,122 +42,6 @@ class Dlg extends Handler_Protected {
//return;
}
- function editPrefProfiles() {
- print "<div dojoType=\"dijit.Toolbar\">";
-
- print "<div dojoType=\"dijit.form.DropDownButton\">".
- "<span>" . __('Select')."</span>";
- print "<div dojoType=\"dijit.Menu\" style=\"display: none;\">";
- print "<div onclick=\"selectTableRows('prefFeedProfileList', 'all')\"
- dojoType=\"dijit.MenuItem\">".__('All')."</div>";
- print "<div onclick=\"selectTableRows('prefFeedProfileList', 'none')\"
- dojoType=\"dijit.MenuItem\">".__('None')."</div>";
- print "</div></div>";
-
- print "<div style=\"float : right\">";
-
- print "<input name=\"newprofile\" dojoType=\"dijit.form.ValidationTextBox\"
- required=\"1\">
- <button dojoType=\"dijit.form.Button\"
- onclick=\"dijit.byId('profileEditDlg').addProfile()\">".
- __('Create profile')."</button></div>";
-
- print "</div>";
-
- $result = db_query($this->link, "SELECT title,id FROM ttrss_settings_profiles
- WHERE owner_uid = ".$_SESSION["uid"]." ORDER BY title");
-
- print "<div class=\"prefProfileHolder\">";
-
- print "<form id=\"profile_edit_form\" onsubmit=\"return false\">";
-
- print "<table width=\"100%\" class=\"prefFeedProfileList\"
- cellspacing=\"0\" id=\"prefFeedProfileList\">";
-
- print "<tr class=\"placeholder\" id=\"FCATR-0\">"; #odd
-
- print "<td width='5%' align='center'><input
- id='FCATC-0'
- onclick='toggleSelectRow2(this);'
- dojoType=\"dijit.form.CheckBox\"
- type=\"checkbox\"></td>";
-
- if (!$_SESSION["profile"]) {
- $is_active = __("(active)");
- } else {
- $is_active = "";
- }
-
- print "<td><span>" .
- __("Default profile") . " $is_active</span></td>";
-
- print "</tr>";
-
- $lnum = 1;
-
- while ($line = db_fetch_assoc($result)) {
-
- $class = ($lnum % 2) ? "even" : "odd";
-
- $profile_id = $line["id"];
- $this_row_id = "id=\"FCATR-$profile_id\"";
-
- print "<tr class=\"placeholder\" $this_row_id>";
-
- $edit_title = htmlspecialchars($line["title"]);
-
- print "<td width='5%' align='center'><input
- onclick='toggleSelectRow2(this);'
- id='FCATC-$profile_id'
- dojoType=\"dijit.form.CheckBox\"
- type=\"checkbox\"></td>";
-
- if ($_SESSION["profile"] == $line["id"]) {
- $is_active = __("(active)");
- } else {
- $is_active = "";
- }
-
- print "<td><span dojoType=\"dijit.InlineEditBox\"
- width=\"300px\" autoSave=\"false\"
- profile-id=\"$profile_id\">" . $edit_title .
- "<script type=\"dojo/method\" event=\"onChange\" args=\"item\">
- var elem = this;
- dojo.xhrPost({
- url: 'backend.php',
- content: {op: 'rpc', method: 'saveprofile',
- value: this.value,
- id: this.srcNodeRef.getAttribute('profile-id')},
- load: function(response) {
- elem.attr('value', response);
- }
- });
- </script>
- </span> $is_active</td>";
-
- print "</tr>";
-
- ++$lnum;
- }
-
- print "</table>";
- print "</form>";
- print "</div>";
-
- print "<div class='dlgButtons'>
- <div style='float : left'>
- <button dojoType=\"dijit.form.Button\" onclick=\"dijit.byId('profileEditDlg').removeSelected()\">".
- __('Remove selected profiles')."</button>
- <button dojoType=\"dijit.form.Button\" onclick=\"dijit.byId('profileEditDlg').activateProfile()\">".
- __('Activate profile')."</button>
- </div>";
-
- print "<button dojoType=\"dijit.form.Button\" onclick=\"dijit.byId('profileEditDlg').hide()\">".
- __('Close this window')."</button>";
- print "</div>";
-
- }
-
function pubOPMLUrl() {
$url_path = Opml::opml_publish_url($this->link);
@@ -383,130 +267,6 @@ class Dlg extends Handler_Protected {
}
- function customizeCSS() {
- $value = get_pref($this->link, "USER_STYLESHEET");
-
- $value = str_replace("<br/>", "\n", $value);
-
- print_notice(T_sprintf("You can override colors, fonts and layout of your currently selected theme with custom CSS declarations here. <a target=\"_blank\" class=\"visibleLink\" href=\"%s\">This file</a> can be used as a baseline.", "tt-rss.css"));
-
- print "<input dojoType=\"dijit.form.TextBox\" style=\"display : none\" name=\"op\" value=\"rpc\">";
- print "<input dojoType=\"dijit.form.TextBox\" style=\"display : none\" name=\"method\" value=\"setpref\">";
- print "<input dojoType=\"dijit.form.TextBox\" style=\"display : none\" name=\"key\" value=\"USER_STYLESHEET\">";
-
- print "<table width='100%'><tr><td>";
- print "<textarea dojoType=\"dijit.form.SimpleTextarea\"
- style='font-size : 12px; width : 100%; height: 200px;'
- placeHolder='body#ttrssMain { font-size : 14px; };'
- name='value'>$value</textarea>";
- print "</td></tr></table>";
-
- print "<div class='dlgButtons'>";
- print "<button dojoType=\"dijit.form.Button\"
- onclick=\"dijit.byId('cssEditDlg').execute()\">".__('Save')."</button> ";
- print "<button dojoType=\"dijit.form.Button\"
- onclick=\"dijit.byId('cssEditDlg').hide()\">".__('Cancel')."</button>";
- print "</div>";
-
- }
-
- function addInstance() {
- print "<input dojoType=\"dijit.form.TextBox\" style=\"display : none\" name=\"op\" value=\"pref-instances\">";
- print "<input dojoType=\"dijit.form.TextBox\" style=\"display : none\" name=\"method\" value=\"add\">";
-
- print "<div class=\"dlgSec\">".__("Instance")."</div>";
-
- print "<div class=\"dlgSecCont\">";
-
- /* URL */
-
- print __("URL:") . " ";
-
- print "<input dojoType=\"dijit.form.ValidationTextBox\" required=\"1\"
- placeHolder=\"".__("Instance URL")."\"
- regExp='^(http|https)://.*'
- style=\"font-size : 16px; width: 20em\" name=\"access_url\">";
-
- print "<hr/>";
-
- $access_key = sha1(uniqid(rand(), true));
-
- /* Access key */
-
- print __("Access key:") . " ";
-
- print "<input dojoType=\"dijit.form.ValidationTextBox\" required=\"1\"
- placeHolder=\"".__("Access key")."\" regExp='\w{40}'
- style=\"width: 20em\" name=\"access_key\" id=\"instance_add_key\"
- value=\"$access_key\">";
-
- print "<p class='insensitive'>" . __("Use one access key for both linked instances.");
-
- print "</div>";
-
- print "<div class=\"dlgButtons\">
- <div style='float : left'>
- <button dojoType=\"dijit.form.Button\"
- onclick=\"return dijit.byId('instanceAddDlg').regenKey()\">".
- __('Generate new key')."</button>
- </div>
- <button dojoType=\"dijit.form.Button\"
- onclick=\"return dijit.byId('instanceAddDlg').execute()\">".
- __('Create link')."</button>
- <button dojoType=\"dijit.form.Button\"
- onclick=\"return dijit.byId('instanceAddDlg').hide()\"\">".
- __('Cancel')."</button></div>";
-
- return;
- }
-
- function batchSubscribe() {
- print "<input dojoType=\"dijit.form.TextBox\" style=\"display : none\" name=\"op\" value=\"rpc\">";
- print "<input dojoType=\"dijit.form.TextBox\" style=\"display : none\" name=\"method\" value=\"batchaddfeeds\">";
-
- print "<table width='100%'><tr><td>
- ".__("Add one valid RSS feed per line (no feed detection is done)")."
- </td><td align='right'>";
- if (get_pref($this->link, 'ENABLE_FEED_CATS')) {
- print __('Place in category:') . " ";
- print_feed_cat_select($this->link, "cat", false, 'dojoType="dijit.form.Select"');
- }
- print "</td></tr><tr><td colspan='2'>";
- print "<textarea
- style='font-size : 12px; width : 100%; height: 200px;'
- placeHolder=\"".__("Feeds to subscribe, One per line")."\"
- dojoType=\"dijit.form.SimpleTextarea\" required=\"1\" name=\"feeds\"></textarea>";
-
- print "</td></tr><tr><td colspan='2'>";
-
- print "<div id='feedDlg_loginContainer' style='display : none'>
- " .
- " <input dojoType=\"dijit.form.TextBox\" name='login'\"
- placeHolder=\"".__("Login")."\"
- style=\"width : 10em;\"> ".
- " <input
- placeHolder=\"".__("Password")."\"
- dojoType=\"dijit.form.TextBox\" type='password'
- style=\"width : 10em;\" name='pass'\">".
- "</div>";
-
- print "</td></tr><tr><td colspan='2'>";
-
- print "<div style=\"clear : both\">
- <input type=\"checkbox\" name=\"need_auth\" dojoType=\"dijit.form.CheckBox\" id=\"feedDlg_loginCheck\"
- onclick='checkboxToggleElement(this, \"feedDlg_loginContainer\")'>
- <label for=\"feedDlg_loginCheck\">".
- __('Feeds require authentication.')."</div>";
-
- print "</form>";
-
- print "</td></tr></table>";
-
- print "<div class=\"dlgButtons\">
- <button dojoType=\"dijit.form.Button\" onclick=\"return dijit.byId('batchSubDlg').execute()\">".__('Subscribe')."</button>
- <button dojoType=\"dijit.form.Button\" onclick=\"return dijit.byId('batchSubDlg').hide()\">".__('Cancel')."</button>
- </div>";
- }
}
?>
diff --git a/classes/pref/feeds.php b/classes/pref/feeds.php
index 1983987ab..e48953e94 100644
--- a/classes/pref/feeds.php
+++ b/classes/pref/feeds.php
@@ -3,7 +3,8 @@ class Pref_Feeds extends Handler_Protected {
function csrf_ignore($method) {
$csrf_ignored = array("index", "getfeedtree", "add", "editcats", "editfeed",
- "savefeedorder", "uploadicon", "feedswitherrors", "inactivefeeds");
+ "savefeedorder", "uploadicon", "feedswitherrors", "inactivefeeds",
+ "batchsubscribe");
return array_search($method, $csrf_ignored) !== false;
}
@@ -1749,5 +1750,54 @@ class Pref_Feeds extends Handler_Protected {
}
}
+ function batchSubscribe() {
+ print "<input dojoType=\"dijit.form.TextBox\" style=\"display : none\" name=\"op\" value=\"rpc\">";
+ print "<input dojoType=\"dijit.form.TextBox\" style=\"display : none\" name=\"method\" value=\"batchaddfeeds\">";
+
+ print "<table width='100%'><tr><td>
+ ".__("Add one valid RSS feed per line (no feed detection is done)")."
+ </td><td align='right'>";
+ if (get_pref($this->link, 'ENABLE_FEED_CATS')) {
+ print __('Place in category:') . " ";
+ print_feed_cat_select($this->link, "cat", false, 'dojoType="dijit.form.Select"');
+ }
+ print "</td></tr><tr><td colspan='2'>";
+ print "<textarea
+ style='font-size : 12px; width : 100%; height: 200px;'
+ placeHolder=\"".__("Feeds to subscribe, One per line")."\"
+ dojoType=\"dijit.form.SimpleTextarea\" required=\"1\" name=\"feeds\"></textarea>";
+
+ print "</td></tr><tr><td colspan='2'>";
+
+ print "<div id='feedDlg_loginContainer' style='display : none'>
+ " .
+ " <input dojoType=\"dijit.form.TextBox\" name='login'\"
+ placeHolder=\"".__("Login")."\"
+ style=\"width : 10em;\"> ".
+ " <input
+ placeHolder=\"".__("Password")."\"
+ dojoType=\"dijit.form.TextBox\" type='password'
+ style=\"width : 10em;\" name='pass'\">".
+ "</div>";
+
+ print "</td></tr><tr><td colspan='2'>";
+
+ print "<div style=\"clear : both\">
+ <input type=\"checkbox\" name=\"need_auth\" dojoType=\"dijit.form.CheckBox\" id=\"feedDlg_loginCheck\"
+ onclick='checkboxToggleElement(this, \"feedDlg_loginContainer\")'>
+ <label for=\"feedDlg_loginCheck\">".
+ __('Feeds require authentication.')."</div>";
+
+ print "</form>";
+
+ print "</td></tr></table>";
+
+ print "<div class=\"dlgButtons\">
+ <button dojoType=\"dijit.form.Button\" onclick=\"return dijit.byId('batchSubDlg').execute()\">".__('Subscribe')."</button>
+ <button dojoType=\"dijit.form.Button\" onclick=\"return dijit.byId('batchSubDlg').hide()\">".__('Cancel')."</button>
+ </div>";
+ }
+
+
}
?>
diff --git a/classes/pref/prefs.php b/classes/pref/prefs.php
index 2190dc0e7..cc523092f 100644
--- a/classes/pref/prefs.php
+++ b/classes/pref/prefs.php
@@ -2,7 +2,7 @@
class Pref_Prefs extends Handler_Protected {
function csrf_ignore($method) {
- $csrf_ignored = array("index", "updateself");
+ $csrf_ignored = array("index", "updateself", "customizecss", "editprefprofiles");
return array_search($method, $csrf_ignored) !== false;
}
@@ -870,5 +870,150 @@ class Pref_Prefs extends Handler_Protected {
global $pluginhost;
$pluginhost->clear_data($pluginhost->get_plugin($name));
}
+
+ function customizeCSS() {
+ $value = get_pref($this->link, "USER_STYLESHEET");
+
+ $value = str_replace("<br/>", "\n", $value);
+
+ print_notice(T_sprintf("You can override colors, fonts and layout of your currently selected theme with custom CSS declarations here. <a target=\"_blank\" class=\"visibleLink\" href=\"%s\">This file</a> can be used as a baseline.", "tt-rss.css"));
+
+ print "<input dojoType=\"dijit.form.TextBox\" style=\"display : none\" name=\"op\" value=\"rpc\">";
+ print "<input dojoType=\"dijit.form.TextBox\" style=\"display : none\" name=\"method\" value=\"setpref\">";
+ print "<input dojoType=\"dijit.form.TextBox\" style=\"display : none\" name=\"key\" value=\"USER_STYLESHEET\">";
+
+ print "<table width='100%'><tr><td>";
+ print "<textarea dojoType=\"dijit.form.SimpleTextarea\"
+ style='font-size : 12px; width : 100%; height: 200px;'
+ placeHolder='body#ttrssMain { font-size : 14px; };'
+ name='value'>$value</textarea>";
+ print "</td></tr></table>";
+
+ print "<div class='dlgButtons'>";
+ print "<button dojoType=\"dijit.form.Button\"
+ onclick=\"dijit.byId('cssEditDlg').execute()\">".__('Save')."</button> ";
+ print "<button dojoType=\"dijit.form.Button\"
+ onclick=\"dijit.byId('cssEditDlg').hide()\">".__('Cancel')."</button>";
+ print "</div>";
+
+ }
+
+ function editPrefProfiles() {
+ print "<div dojoType=\"dijit.Toolbar\">";
+
+ print "<div dojoType=\"dijit.form.DropDownButton\">".
+ "<span>" . __('Select')."</span>";
+ print "<div dojoType=\"dijit.Menu\" style=\"display: none;\">";
+ print "<div onclick=\"selectTableRows('prefFeedProfileList', 'all')\"
+ dojoType=\"dijit.MenuItem\">".__('All')."</div>";
+ print "<div onclick=\"selectTableRows('prefFeedProfileList', 'none')\"
+ dojoType=\"dijit.MenuItem\">".__('None')."</div>";
+ print "</div></div>";
+
+ print "<div style=\"float : right\">";
+
+ print "<input name=\"newprofile\" dojoType=\"dijit.form.ValidationTextBox\"
+ required=\"1\">
+ <button dojoType=\"dijit.form.Button\"
+ onclick=\"dijit.byId('profileEditDlg').addProfile()\">".
+ __('Create profile')."</button></div>";
+
+ print "</div>";
+
+ $result = db_query($this->link, "SELECT title,id FROM ttrss_settings_profiles
+ WHERE owner_uid = ".$_SESSION["uid"]." ORDER BY title");
+
+ print "<div class=\"prefProfileHolder\">";
+
+ print "<form id=\"profile_edit_form\" onsubmit=\"return false\">";
+
+ print "<table width=\"100%\" class=\"prefFeedProfileList\"
+ cellspacing=\"0\" id=\"prefFeedProfileList\">";
+
+ print "<tr class=\"placeholder\" id=\"FCATR-0\">"; #odd
+
+ print "<td width='5%' align='center'><input
+ id='FCATC-0'
+ onclick='toggleSelectRow2(this);'
+ dojoType=\"dijit.form.CheckBox\"
+ type=\"checkbox\"></td>";
+
+ if (!$_SESSION["profile"]) {
+ $is_active = __("(active)");
+ } else {
+ $is_active = "";
+ }
+
+ print "<td><span>" .
+ __("Default profile") . " $is_active</span></td>";
+
+ print "</tr>";
+
+ $lnum = 1;
+
+ while ($line = db_fetch_assoc($result)) {
+
+ $class = ($lnum % 2) ? "even" : "odd";
+
+ $profile_id = $line["id"];
+ $this_row_id = "id=\"FCATR-$profile_id\"";
+
+ print "<tr class=\"placeholder\" $this_row_id>";
+
+ $edit_title = htmlspecialchars($line["title"]);
+
+ print "<td width='5%' align='center'><input
+ onclick='toggleSelectRow2(this);'
+ id='FCATC-$profile_id'
+ dojoType=\"dijit.form.CheckBox\"
+ type=\"checkbox\"></td>";
+
+ if ($_SESSION["profile"] == $line["id"]) {
+ $is_active = __("(active)");
+ } else {
+ $is_active = "";
+ }
+
+ print "<td><span dojoType=\"dijit.InlineEditBox\"
+ width=\"300px\" autoSave=\"false\"
+ profile-id=\"$profile_id\">" . $edit_title .
+ "<script type=\"dojo/method\" event=\"onChange\" args=\"item\">
+ var elem = this;
+ dojo.xhrPost({
+ url: 'backend.php',
+ content: {op: 'rpc', method: 'saveprofile',
+ value: this.value,
+ id: this.srcNodeRef.getAttribute('profile-id')},
+ load: function(response) {
+ elem.attr('value', response);
+ }
+ });
+ </script>
+ </span> $is_active</td>";
+
+ print "</tr>";
+
+ ++$lnum;
+ }
+
+ print "</table>";
+ print "</form>";
+ print "</div>";
+
+ print "<div class='dlgButtons'>
+ <div style='float : left'>
+ <button dojoType=\"dijit.form.Button\" onclick=\"dijit.byId('profileEditDlg').removeSelected()\">".
+ __('Remove selected profiles')."</button>
+ <button dojoType=\"dijit.form.Button\" onclick=\"dijit.byId('profileEditDlg').activateProfile()\">".
+ __('Activate profile')."</button>
+ </div>";
+
+ print "<button dojoType=\"dijit.form.Button\" onclick=\"dijit.byId('profileEditDlg').hide()\">".
+ __('Close this window')."</button>";
+ print "</div>";
+
+ }
+
+
}
?>
diff --git a/js/prefs.js b/js/prefs.js
index 26501bec9..5ba1e5d3d 100644
--- a/js/prefs.js
+++ b/js/prefs.js
@@ -1400,7 +1400,7 @@ function editProfiles() {
if (dijit.byId("profileEditDlg"))
dijit.byId("profileEditDlg").destroyRecursive();
- var query = "backend.php?op=dlg&method=editPrefProfiles";
+ var query = "backend.php?op=pref-prefs&method=editPrefProfiles";
dialog = new dijit.Dialog({
id: "profileEditDlg",
@@ -1715,7 +1715,7 @@ function editLabel(id, event) {
function customizeCSS() {
try {
- var query = "backend.php?op=dlg&method=customizeCSS";
+ var query = "backend.php?op=pref-prefs&method=customizeCSS";
if (dijit.byId("cssEditDlg"))
dijit.byId("cssEditDlg").destroyRecursive();
@@ -1759,7 +1759,7 @@ function gotoExportOpml(filename, settings) {
function batchSubscribe() {
try {
- var query = "backend.php?op=dlg&method=batchSubscribe";
+ var query = "backend.php?op=pref-feeds&method=batchSubscribe";
// overlapping widgets
if (dijit.byId("batchSubDlg")) dijit.byId("batchSubDlg").destroyRecursive();
diff --git a/plugins/instances/init.php b/plugins/instances/init.php
index 6e8d43e9b..6a7f7003a 100644
--- a/plugins/instances/init.php
+++ b/plugins/instances/init.php
@@ -392,6 +392,55 @@ class Instances extends Plugin implements IHandler {
}
}
+ function addInstance() {
+ print "<input dojoType=\"dijit.form.TextBox\" style=\"display : none\" name=\"op\" value=\"pref-instances\">";
+ print "<input dojoType=\"dijit.form.TextBox\" style=\"display : none\" name=\"method\" value=\"add\">";
+
+ print "<div class=\"dlgSec\">".__("Instance")."</div>";
+
+ print "<div class=\"dlgSecCont\">";
+
+ /* URL */
+
+ print __("URL:") . " ";
+
+ print "<input dojoType=\"dijit.form.ValidationTextBox\" required=\"1\"
+ placeHolder=\"".__("Instance URL")."\"
+ regExp='^(http|https)://.*'
+ style=\"font-size : 16px; width: 20em\" name=\"access_url\">";
+
+ print "<hr/>";
+
+ $access_key = sha1(uniqid(rand(), true));
+
+ /* Access key */
+
+ print __("Access key:") . " ";
+
+ print "<input dojoType=\"dijit.form.ValidationTextBox\" required=\"1\"
+ placeHolder=\"".__("Access key")."\" regExp='\w{40}'
+ style=\"width: 20em\" name=\"access_key\" id=\"instance_add_key\"
+ value=\"$access_key\">";
+
+ print "<p class='insensitive'>" . __("Use one access key for both linked instances.");
+
+ print "</div>";
+
+ print "<div class=\"dlgButtons\">
+ <div style='float : left'>
+ <button dojoType=\"dijit.form.Button\"
+ onclick=\"return dijit.byId('instanceAddDlg').regenKey()\">".
+ __('Generate new key')."</button>
+ </div>
+ <button dojoType=\"dijit.form.Button\"
+ onclick=\"return dijit.byId('instanceAddDlg').execute()\">".
+ __('Create link')."</button>
+ <button dojoType=\"dijit.form.Button\"
+ onclick=\"return dijit.byId('instanceAddDlg').hide()\"\">".
+ __('Cancel')."</button></div>";
+
+ return;
+ }
}
?>
diff --git a/plugins/instances/instances.js b/plugins/instances/instances.js
index 83213896d..4a60692b3 100644
--- a/plugins/instances/instances.js
+++ b/plugins/instances/instances.js
@@ -1,6 +1,6 @@
function addInstance() {
try {
- var query = "backend.php?op=dlg&method=addInstance";
+ var query = "backend.php?op=pluginhandler&plugin=instances&method=addInstance";
if (dijit.byId("instanceAddDlg"))
dijit.byId("instanceAddDlg").destroyRecursive();