rework user CSS support (bump schema)
This commit is contained in:
parent
dcb38ced56
commit
88e4e5979c
12 changed files with 98 additions and 17 deletions
|
@ -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>";
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
?>
|
?>
|
||||||
|
|
|
@ -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>";
|
print "</dlg>";
|
||||||
}
|
}
|
||||||
?>
|
?>
|
||||||
|
|
|
@ -16,7 +16,7 @@
|
||||||
$prefs_blacklist = array("HIDE_FEEDLIST", "SYNC_COUNTERS", "ENABLE_LABELS",
|
$prefs_blacklist = array("HIDE_FEEDLIST", "SYNC_COUNTERS", "ENABLE_LABELS",
|
||||||
"ENABLE_SEARCH_TOOLBAR", "HIDE_READ_FEEDS", "ENABLE_FEED_ICONS",
|
"ENABLE_SEARCH_TOOLBAR", "HIDE_READ_FEEDS", "ENABLE_FEED_ICONS",
|
||||||
"ENABLE_OFFLINE_READING", "EXTENDED_FEEDLIST", "FEEDS_SORT_BY_UNREAD",
|
"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",
|
$profile_blacklist = array("ALLOW_DUPLICATE_POSTS", "PURGE_OLD_DAYS",
|
||||||
"PURGE_UNREAD_ARTICLES", "DIGEST_ENABLE", "DIGEST_CATCHUP",
|
"PURGE_UNREAD_ARTICLES", "DIGEST_ENABLE", "DIGEST_CATCHUP",
|
||||||
|
@ -419,6 +419,10 @@
|
||||||
$timezones = explode("\n", file_get_contents("lib/timezones.txt"));
|
$timezones = explode("\n", file_get_contents("lib/timezones.txt"));
|
||||||
|
|
||||||
print_select($pref_name, $value, $timezones, 'dojoType="dijit.form.FilteringSelect"');
|
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") {
|
} else if ($pref_name == "DEFAULT_UPDATE_INTERVAL") {
|
||||||
|
|
||||||
|
|
31
prefs.js
31
prefs.js
|
@ -926,6 +926,7 @@ function init() {
|
||||||
dojo.require("dijit.InlineEditBox");
|
dojo.require("dijit.InlineEditBox");
|
||||||
dojo.require("dijit.ColorPalette");
|
dojo.require("dijit.ColorPalette");
|
||||||
dojo.require("dijit.ProgressBar");
|
dojo.require("dijit.ProgressBar");
|
||||||
|
dojo.require("dijit.form.SimpleTextarea");
|
||||||
|
|
||||||
dojo.registerModulePath("lib", "..");
|
dojo.registerModulePath("lib", "..");
|
||||||
dojo.registerModulePath("fox", "../..");
|
dojo.registerModulePath("fox", "../..");
|
||||||
|
@ -1719,3 +1720,33 @@ function clearTwitterCredentials() {
|
||||||
exception_error("clearTwitterCredentials", e);
|
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);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
@ -28,11 +28,7 @@
|
||||||
<link rel="stylesheet" type="text/css" href="lib/dijit/themes/claro/claro.css"/>
|
<link rel="stylesheet" type="text/css" href="lib/dijit/themes/claro/claro.css"/>
|
||||||
|
|
||||||
<?php print_theme_includes($link) ?>
|
<?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"/>
|
<link rel="shortcut icon" type="image/png" href="images/favicon.png"/>
|
||||||
|
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
require_once "functions.php";
|
require_once "functions.php";
|
||||||
|
|
||||||
define('EXPECTED_CONFIG_VERSION', 20);
|
define('EXPECTED_CONFIG_VERSION', 20);
|
||||||
define('SCHEMA_VERSION', 76);
|
define('SCHEMA_VERSION', 77);
|
||||||
|
|
||||||
if (!file_exists("config.php")) {
|
if (!file_exists("config.php")) {
|
||||||
print "<b>Fatal Error</b>: You forgot to copy
|
print "<b>Fatal Error</b>: You forgot to copy
|
||||||
|
|
|
@ -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;
|
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,
|
create table ttrss_enclosures (id integer primary key auto_increment,
|
||||||
content_url text not null,
|
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) 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,
|
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.');
|
'Use feed-specified date to sort headlines instead of local import date.');
|
||||||
|
|
||||||
create table ttrss_user_prefs (
|
create table ttrss_user_prefs (
|
||||||
owner_uid integer not null,
|
owner_uid integer not null,
|
||||||
pref_name varchar(250),
|
pref_name varchar(250),
|
||||||
value text not null,
|
value longtext not null,
|
||||||
profile integer,
|
profile integer,
|
||||||
index (profile),
|
index (profile),
|
||||||
foreign key (profile) references ttrss_settings_profiles(id) ON DELETE CASCADE,
|
foreign key (profile) references ttrss_settings_profiles(id) ON DELETE CASCADE,
|
||||||
|
|
|
@ -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);
|
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,
|
create table ttrss_enclosures (id serial not null primary key,
|
||||||
content_url text not null,
|
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,
|
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.');
|
'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 (
|
create table ttrss_user_prefs (
|
||||||
owner_uid integer not null references ttrss_users(id) ON DELETE CASCADE,
|
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,
|
pref_name varchar(250) not null references ttrss_prefs(pref_name) ON DELETE CASCADE,
|
||||||
|
|
7
schema/versions/mysql/77.sql
Normal file
7
schema/versions/mysql/77.sql
Normal file
|
@ -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;
|
7
schema/versions/pgsql/77.sql
Normal file
7
schema/versions/pgsql/77.sql
Normal file
|
@ -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;
|
|
@ -306,13 +306,13 @@ input.editbox {
|
||||||
|
|
||||||
/* preferences */
|
/* preferences */
|
||||||
|
|
||||||
table.prefPrefsList tr:hover td.prefValue {
|
/* table.prefPrefsList tr:hover td.prefValue {
|
||||||
color : #88b0f0;
|
color : #88b0f0;
|
||||||
}
|
}
|
||||||
|
|
||||||
table.prefPrefsList tr:hover td.prefValue input {
|
table.prefPrefsList tr:hover td.prefValue input {
|
||||||
color : #88b0f0;
|
color : #88b0f0;
|
||||||
}
|
} */
|
||||||
|
|
||||||
table.prefPrefsList h3 {
|
table.prefPrefsList h3 {
|
||||||
margin-top : 0px;
|
margin-top : 0px;
|
||||||
|
@ -1664,3 +1664,4 @@ a.bookmarklet {
|
||||||
top : -1px;
|
top : -1px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -31,11 +31,7 @@
|
||||||
<link rel="stylesheet" type="text/css" href="lib/dijit/themes/claro/claro.css"/>
|
<link rel="stylesheet" type="text/css" href="lib/dijit/themes/claro/claro.css"/>
|
||||||
|
|
||||||
<?php print_theme_includes($link) ?>
|
<?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 rel="stylesheet" type="text/css" href="<?php echo $user_css_url ?>"/>
|
|
||||||
<?php } ?>
|
|
||||||
|
|
||||||
<link rel="shortcut icon" type="image/png" href="images/favicon.png"/>
|
<link rel="shortcut icon" type="image/png" href="images/favicon.png"/>
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue