summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--modules/popup-dialog.php88
-rw-r--r--modules/pref-feeds.php2
-rw-r--r--prefs.js157
3 files changed, 144 insertions, 103 deletions
diff --git a/modules/popup-dialog.php b/modules/popup-dialog.php
index 062542a1c..1b90ecfd7 100644
--- a/modules/popup-dialog.php
+++ b/modules/popup-dialog.php
@@ -68,36 +68,44 @@
if ($id == "editPrefProfiles") {
- print "<title>".__('Settings Profiles')."</title>";
- print "<content><![CDATA[";
-
- print "<div><input id=\"fadd_profile\"
- onkeypress=\"return filterCR(event, addPrefProfile)\"
- size=\"40\">
- <button onclick=\"javascript:addPrefProfile()\">".
+ print "<div dojoType=\"dijit.Toolbar\">";
+
+# TODO: depends on selectTableRows() being broken for this list
+# 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 "<p>";
+# print "</div>";
+
$result = db_query($link, "SELECT title,id FROM ttrss_settings_profiles
WHERE owner_uid = ".$_SESSION["uid"]." ORDER BY title");
- print __('Select:')."
- <a href=\"#\" onclick=\"selectTableRows('prefFeedCatList', 'all')\">".__('All')."</a>,
- <a href=\"#\" onclick=\"selectTableRows('prefFeedCatList', 'none')\">".__('None')."</a>";
-
print "<div class=\"prefFeedCatHolder\">";
print "<form id=\"profile_edit_form\" onsubmit=\"return false\">";
- print "<table width=\"100%\" class=\"prefFeedCatList\"
- cellspacing=\"0\" id=\"prefFeedCatList\">";
+ print "<table width=\"100%\" class=\"prefFeedProfileList\"
+ cellspacing=\"0\" id=\"prefFeedProfileList\">";
- print "<tr class=\"odd\" id=\"FCATR-0\">";
+ print "<tr class=\"\" id=\"FCATR-0\">"; #odd
print "<td width='5%' align='center'><input
- onclick='toggleSelectRow(this);'
- type=\"checkbox\" id=\"FCCHK-0\"></td>";
+ onclick='toggleSelectRow2(this);'
+ dojoType=\"dijit.form.CheckBox\"
+ type=\"checkbox\"></td>";
if (!$_SESSION["profile"]) {
$is_active = __("(active)");
@@ -105,7 +113,7 @@
$is_active = "";
}
- print "<td><span id=\"FCATT-0\">" .
+ print "<td><span>" .
__("Default profile") . " $is_active</span></td>";
print "</tr>";
@@ -116,16 +124,17 @@
$class = ($lnum % 2) ? "even" : "odd";
- $cat_id = $line["id"];
- $this_row_id = "id=\"FCATR-$cat_id\"";
+ $profile_id = $line["id"];
+ $this_row_id = "id=\"FCATR-$profile_id\"";
- print "<tr class=\"$class\" $this_row_id>";
+ print "<tr class=\"\" $this_row_id>";
$edit_title = htmlspecialchars($line["title"]);
print "<td width='5%' align='center'><input
- onclick='toggleSelectRow(this);'
- type=\"checkbox\" id=\"FCCHK-$cat_id\"></td>";
+ onclick='toggleSelectRow2(this);'
+ dojoType=\"dijit.form.CheckBox\"
+ type=\"checkbox\"></td>";
if ($_SESSION["profile"] == $line["id"]) {
$is_active = __("(active)");
@@ -133,9 +142,23 @@
$is_active = "";
}
- print "<td><span id=\"FCATT-$cat_id\">" .
- $edit_title . "</span> $is_active</td>";
-
+ 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', subop: '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;
@@ -147,19 +170,16 @@
print "<div class='dlgButtons'>
<div style='float : left'>
- <button onclick=\"return removeSelectedPrefProfiles()\">".
- __('Remove')."</button>
- <button onclick=\"return activatePrefProfile()\">".
- __('Activate')."</button>
+ <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 onclick=\"return closeInfoBox()\">".
+ print "<button dojoType=\"dijit.form.Button\" onclick=\"dijit.byId('profileEditDlg').hide()\">".
__('Close this window')."</button>";
-
print "</div>";
- print "]]></content>";
- //return;
}
if ($id == "pubOPMLUrl") {
diff --git a/modules/pref-feeds.php b/modules/pref-feeds.php
index 0927b4837..d82cb3f0d 100644
--- a/modules/pref-feeds.php
+++ b/modules/pref-feeds.php
@@ -1061,7 +1061,7 @@
print "<td width='5%' align='center'><input
onclick='toggleSelectRow2(this);' dojoType=\"dijit.form.CheckBox\"
- type=\"checkbox\" id=\"FCCHK-$cat_id\"></td>";
+ type=\"checkbox\"></td>";
print "<td>";
diff --git a/prefs.js b/prefs.js
index d82761609..6baa9a0d4 100644
--- a/prefs.js
+++ b/prefs.js
@@ -72,26 +72,6 @@ function notify_callback2(transport) {
notify_info(transport.responseText);
}
-function init_profile_inline_editor() {
- try {
-
- if ($("prefFeedCatList")) {
- var elems = $("prefFeedCatList").getElementsByTagName("SPAN");
-
- for (var i = 0; i < elems.length; i++) {
- if (elems[i].id && elems[i].id.match("FCATT-")) {
- var id = elems[i].id.replace("FCATT-", "");
- new Ajax.InPlaceEditor(elems[i],
- 'backend.php?op=rpc&subop=saveprofile&id=' + id);
- }
- }
- }
-
- } catch (e) {
- exception_error("init_profile_inline_editor", e);
- }
-}
-
function updateFeedList(sort_key) {
try {
@@ -145,51 +125,6 @@ function updateUsersList(sort_key) {
}
}
-function addPrefProfile() {
-
- var profile = $("fadd_profile");
-
- if (profile.value.length == 0) {
- alert(__("Can't add profile: no name specified."));
- } else {
- notify_progress("Adding profile...");
-
- var query = "?op=rpc&subop=addprofile&title=" +
- param_escape(profile.value);
-
- new Ajax.Request("backend.php", {
- parameters: query,
- onComplete: function(transport) {
- editProfiles();
- } });
-
- }
-}
-
-
-function addFeedCat() {
-
- var cat = $("fadd_cat");
-
- if (cat.value.length == 0) {
- alert(__("Can't add category: no name specified."));
- } else {
- notify_progress("Adding feed category...");
-
- var query = "?op=pref-feeds&subop=editCats&action=add&cat=" +
- param_escape(cat.value);
-
- new Ajax.Request("backend.php", {
- parameters: query,
- onComplete: function(transport) {
- infobox_callback2(transport);
- } });
-
- cat.value = "";
-
- }
-}
-
function addUser() {
try {
@@ -1488,9 +1423,95 @@ function inPreferences() {
}
function editProfiles() {
- displayDlg('editPrefProfiles', false, function() {
- init_profile_inline_editor();
- });
+ try {
+
+ if (dijit.byId("profileEditDlg"))
+ dijit.byId("profileEditDlg").destroyRecursive();
+
+ var query = "backend.php?op=dlg&id=editPrefProfiles";
+
+ dialog = new dijit.Dialog({
+ id: "profileEditDlg",
+ title: __("Settings Profiles"),
+ style: "width: 600px",
+ getSelectedProfiles: function() {
+ return getSelectedTableRowIds("prefFeedProfileList");
+ },
+ removeSelected: function() {
+ var sel_rows = this.getSelectedProfiles();
+
+ if (sel_rows.length > 0) {
+ var ok = confirm(__("Remove selected profiles? Active and default profiles will not be removed."));
+
+ if (ok) {
+ notify_progress("Removing selected profiles...", true);
+
+ var query = "?op=rpc&subop=remprofiles&ids="+
+ param_escape(sel_rows.toString());
+
+ new Ajax.Request("backend.php", {
+ parameters: query,
+ onComplete: function(transport) {
+ notify('');
+ editProfiles();
+ } });
+
+ }
+
+ } else {
+ alert(__("No profiles are selected."));
+ }
+ },
+ activateProfile: function() {
+ var sel_rows = this.getSelectedProfiles();
+
+ if (sel_rows.length == 1) {
+
+ var ok = confirm(__("Activate selected profile?"));
+
+ if (ok) {
+ notify_progress("Loading, please wait...");
+
+ var query = "?op=rpc&subop=setprofile&id="+
+ param_escape(sel_rows.toString());
+
+ new Ajax.Request("backend.php", {
+ parameters: query,
+ onComplete: function(transport) {
+ window.location.reload();
+ } });
+ }
+
+ } else {
+ alert(__("Please choose a profile to activate."));
+ }
+ },
+ addProfile: function() {
+ if (this.validate()) {
+ notify_progress("Creating profile...", true);
+
+ var query = "?op=rpc&subop=addprofile&title=" +
+ param_escape(dialog.attr('value').newprofile);
+
+ new Ajax.Request("backend.php", {
+ parameters: query,
+ onComplete: function(transport) {
+ notify('');
+ editProfiles();
+ } });
+
+ }
+ },
+ execute: function() {
+ if (this.validate()) {
+ }
+ },
+ href: query});
+
+ dialog.show();
+ } catch (e) {
+ exception_error("editProfiles", e);
+ }
}
function activatePrefProfile() {