summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrew Dolgov <[email protected]>2010-11-24 19:23:24 +0300
committerAndrew Dolgov <[email protected]>2010-11-24 19:23:24 +0300
commit88e4e5979c505cdbb494c2624b7a4e09c8145217 (patch)
tree3bc816f3e2087b462c9028108ceb9c32af32ac09
parentdcb38ced56c33463bb55f266b2d586308ff12b2f (diff)
rework user CSS support (bump schema)
-rw-r--r--functions.php11
-rw-r--r--modules/popup-dialog.php24
-rw-r--r--modules/pref-prefs.php6
-rw-r--r--prefs.js31
-rw-r--r--prefs.php6
-rw-r--r--sanity_check.php2
-rw-r--r--schema/ttrss_schema_mysql.sql6
-rw-r--r--schema/ttrss_schema_pgsql.sql4
-rw-r--r--schema/versions/mysql/77.sql7
-rw-r--r--schema/versions/pgsql/77.sql7
-rw-r--r--tt-rss.css5
-rw-r--r--tt-rss.php6
12 files changed, 98 insertions, 17 deletions
diff --git a/functions.php b/functions.php
index 5e567af03..28f2cc892 100644
--- a/functions.php
+++ b/functions.php
@@ -7040,4 +7040,15 @@
}
}
+ function print_user_stylesheet($link) {
+ $value = get_pref($link, 'USER_STYLESHEET');
+
+ if ($value) {
+ print "<style type=\"text/css\">";
+ print $value;
+ print "</style>";
+ }
+
+ }
+
?>
diff --git a/modules/popup-dialog.php b/modules/popup-dialog.php
index 52b1f94f6..394ee16a0 100644
--- a/modules/popup-dialog.php
+++ b/modules/popup-dialog.php
@@ -785,6 +785,30 @@
}
+ if ($id == "customizeCSS") {
+
+ $value = get_pref($link, "USER_STYLESHEET");
+
+ print 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=\"subop\" value=\"setpref\">";
+ print "<input dojoType=\"dijit.form.TextBox\" style=\"display : none\" name=\"key\" value=\"USER_STYLESHEET\">";
+
+ print "<p><textarea dojoType=\"dijit.form.SimpleTextarea\"
+ style='font-size : 12px; width : 100%; height: 200px;'
+ placeHolder='body#ttrssMain { font-size : 14px; };'
+ name='value'>$value</textarea>";
+
+ 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>";
+
+ }
+
print "</dlg>";
}
?>
diff --git a/modules/pref-prefs.php b/modules/pref-prefs.php
index 5bc180de4..359359733 100644
--- a/modules/pref-prefs.php
+++ b/modules/pref-prefs.php
@@ -16,7 +16,7 @@
$prefs_blacklist = array("HIDE_FEEDLIST", "SYNC_COUNTERS", "ENABLE_LABELS",
"ENABLE_SEARCH_TOOLBAR", "HIDE_READ_FEEDS", "ENABLE_FEED_ICONS",
"ENABLE_OFFLINE_READING", "EXTENDED_FEEDLIST", "FEEDS_SORT_BY_UNREAD",
- "OPEN_LINKS_IN_NEW_WINDOW");
+ "OPEN_LINKS_IN_NEW_WINDOW", "USER_STYLESHEET_URL");
$profile_blacklist = array("ALLOW_DUPLICATE_POSTS", "PURGE_OLD_DAYS",
"PURGE_UNREAD_ARTICLES", "DIGEST_ENABLE", "DIGEST_CATCHUP",
@@ -419,6 +419,10 @@
$timezones = explode("\n", file_get_contents("lib/timezones.txt"));
print_select($pref_name, $value, $timezones, 'dojoType="dijit.form.FilteringSelect"');
+ } else if ($pref_name == "USER_STYLESHEET") {
+
+ print "<button dojoType=\"dijit.form.Button\"
+ onclick=\"customizeCSS()\">" . __('Customize') . "</button>";
} else if ($pref_name == "DEFAULT_UPDATE_INTERVAL") {
diff --git a/prefs.js b/prefs.js
index f83ff0d92..ea2bf09d3 100644
--- a/prefs.js
+++ b/prefs.js
@@ -926,6 +926,7 @@ function init() {
dojo.require("dijit.InlineEditBox");
dojo.require("dijit.ColorPalette");
dojo.require("dijit.ProgressBar");
+ dojo.require("dijit.form.SimpleTextarea");
dojo.registerModulePath("lib", "..");
dojo.registerModulePath("fox", "../..");
@@ -1719,3 +1720,33 @@ function clearTwitterCredentials() {
exception_error("clearTwitterCredentials", e);
}
}
+
+function customizeCSS() {
+ try {
+ var query = "backend.php?op=dlg&id=customizeCSS";
+
+ if (dijit.byId("cssEditDlg"))
+ dijit.byId("cssEditDlg").destroyRecursive();
+
+ dialog = new dijit.Dialog({
+ id: "cssEditDlg",
+ title: __("Customize stylesheet"),
+ style: "width: 600px",
+ execute: function() {
+ notify_progress('Saving data...', true);
+ new Ajax.Request("backend.php", {
+ parameters: dojo.objectToQuery(this.attr('value')),
+ onComplete: function(transport) {
+ notify('');
+ window.location.reload();
+ } });
+
+ },
+ href: query});
+
+ dialog.show();
+
+ } catch (e) {
+ exception_error("customizeCSS", e);
+ }
+}
diff --git a/prefs.php b/prefs.php
index 972e577ca..891b9c8aa 100644
--- a/prefs.php
+++ b/prefs.php
@@ -28,12 +28,8 @@
<link rel="stylesheet" type="text/css" href="lib/dijit/themes/claro/claro.css"/>
<?php print_theme_includes($link) ?>
+ <?php print_user_stylesheet($link) ?>
- <?php $user_css_url = get_pref($link, 'USER_STYLESHEET_URL'); ?>
- <?php if ($user_css_url) { ?>
- <link type="text/css" href="<?php echo $user_css_url ?>"/>
- <?php } ?>
-
<link rel="shortcut icon" type="image/png" href="images/favicon.png"/>
<script type="text/javascript" src="lib/prototype.js"></script>
diff --git a/sanity_check.php b/sanity_check.php
index 1651ceec0..628499d17 100644
--- a/sanity_check.php
+++ b/sanity_check.php
@@ -2,7 +2,7 @@
require_once "functions.php";
define('EXPECTED_CONFIG_VERSION', 20);
- define('SCHEMA_VERSION', 76);
+ define('SCHEMA_VERSION', 77);
if (!file_exists("config.php")) {
print "<b>Fatal Error</b>: You forgot to copy
diff --git a/schema/ttrss_schema_mysql.sql b/schema/ttrss_schema_mysql.sql
index e64df5a90..cf0cbb5fa 100644
--- a/schema/ttrss_schema_mysql.sql
+++ b/schema/ttrss_schema_mysql.sql
@@ -258,7 +258,7 @@ create table ttrss_tags (id integer primary key auto_increment,
create table ttrss_version (schema_version int not null) TYPE=InnoDB DEFAULT CHARSET=UTF8;
-insert into ttrss_version values (76);
+insert into ttrss_version values (77);
create table ttrss_enclosures (id integer primary key auto_increment,
content_url text not null,
@@ -419,13 +419,15 @@ insert into ttrss_prefs (pref_name,type_id,def_value,short_desc,section_id) valu
insert into ttrss_prefs (pref_name,type_id,def_value,short_desc,section_id) values('USER_TIMEZONE', 2, 'UTC', 'User timezone', 1);
+insert into ttrss_prefs (pref_name,type_id,def_value,short_desc,section_id,help_text) values('USER_STYLESHEET', 2, '', 'Customize stylesheet', 2, 'Customize CSS stylesheet to your liking');
+
insert into ttrss_prefs (pref_name,type_id,def_value,short_desc,section_id,help_text) values('SORT_HEADLINES_BY_FEED_DATE', 1, 'true', 'Sort headlines by feed date',3,
'Use feed-specified date to sort headlines instead of local import date.');
create table ttrss_user_prefs (
owner_uid integer not null,
pref_name varchar(250),
- value text not null,
+ value longtext not null,
profile integer,
index (profile),
foreign key (profile) references ttrss_settings_profiles(id) ON DELETE CASCADE,
diff --git a/schema/ttrss_schema_pgsql.sql b/schema/ttrss_schema_pgsql.sql
index fbbcab05b..b7be21d8e 100644
--- a/schema/ttrss_schema_pgsql.sql
+++ b/schema/ttrss_schema_pgsql.sql
@@ -229,7 +229,7 @@ create index ttrss_tags_post_int_id_idx on ttrss_tags(post_int_id);
create table ttrss_version (schema_version int not null);
-insert into ttrss_version values (76);
+insert into ttrss_version values (77);
create table ttrss_enclosures (id serial not null primary key,
content_url text not null,
@@ -385,6 +385,8 @@ insert into ttrss_prefs (pref_name,type_id,def_value,short_desc,section_id) valu
insert into ttrss_prefs (pref_name,type_id,def_value,short_desc,section_id,help_text) values('SORT_HEADLINES_BY_FEED_DATE', 1, 'true', 'Sort headlines by feed date',3,
'Use feed-specified date to sort headlines instead of local import date.');
+insert into ttrss_prefs (pref_name,type_id,def_value,short_desc,section_id,help_text) values('USER_STYLESHEET', 2, '', 'Customize stylesheet', 2, 'Customize CSS stylesheet to your liking');
+
create table ttrss_user_prefs (
owner_uid integer not null references ttrss_users(id) ON DELETE CASCADE,
pref_name varchar(250) not null references ttrss_prefs(pref_name) ON DELETE CASCADE,
diff --git a/schema/versions/mysql/77.sql b/schema/versions/mysql/77.sql
new file mode 100644
index 000000000..944f31d84
--- /dev/null
+++ b/schema/versions/mysql/77.sql
@@ -0,0 +1,7 @@
+begin;
+
+insert into ttrss_prefs (pref_name,type_id,def_value,short_desc,section_id,help_text) values('USER_STYLESHEET', 2, '', 'Customize stylesheet', 2, 'Customize CSS stylesheet to your liking');
+
+update ttrss_version set schema_version = 77;
+
+commit;
diff --git a/schema/versions/pgsql/77.sql b/schema/versions/pgsql/77.sql
new file mode 100644
index 000000000..944f31d84
--- /dev/null
+++ b/schema/versions/pgsql/77.sql
@@ -0,0 +1,7 @@
+begin;
+
+insert into ttrss_prefs (pref_name,type_id,def_value,short_desc,section_id,help_text) values('USER_STYLESHEET', 2, '', 'Customize stylesheet', 2, 'Customize CSS stylesheet to your liking');
+
+update ttrss_version set schema_version = 77;
+
+commit;
diff --git a/tt-rss.css b/tt-rss.css
index e5184d73e..4e767efb8 100644
--- a/tt-rss.css
+++ b/tt-rss.css
@@ -306,13 +306,13 @@ input.editbox {
/* preferences */
-table.prefPrefsList tr:hover td.prefValue {
+/* table.prefPrefsList tr:hover td.prefValue {
color : #88b0f0;
}
table.prefPrefsList tr:hover td.prefValue input {
color : #88b0f0;
-}
+} */
table.prefPrefsList h3 {
margin-top : 0px;
@@ -1664,3 +1664,4 @@ a.bookmarklet {
top : -1px;
}
+
diff --git a/tt-rss.php b/tt-rss.php
index f51648fef..b3dcd6a8d 100644
--- a/tt-rss.php
+++ b/tt-rss.php
@@ -31,11 +31,7 @@
<link rel="stylesheet" type="text/css" href="lib/dijit/themes/claro/claro.css"/>
<?php print_theme_includes($link) ?>
-
- <?php $user_css_url = get_pref($link, 'USER_STYLESHEET_URL'); ?>
- <?php if ($user_css_url) { ?>
- <link rel="stylesheet" type="text/css" href="<?php echo $user_css_url ?>"/>
- <?php } ?>
+ <?php print_user_stylesheet($link) ?>
<link rel="shortcut icon" type="image/png" href="images/favicon.png"/>