diff --git a/.gitignore b/.gitignore index b73c4b400..2abed7edb 100644 --- a/.gitignore +++ b/.gitignore @@ -3,6 +3,4 @@ cache/* vendor composer.phar db/poche.sqlite -output -phpdoc* inc/poche/config.inc.php \ No newline at end of file diff --git a/.gitmodules b/.gitmodules deleted file mode 100644 index bbdd8495d..000000000 --- a/.gitmodules +++ /dev/null @@ -1,6 +0,0 @@ -[submodule "inc/3rdparty/site_config"] - path = inc/3rdparty/site_config - url = git@github.com:inthepoche/site_config.git -[submodule "themes"] - path = themes - url = git://github.com/inthepoche/poche-themes.git diff --git a/inc/3rdparty/FlattrItem.class.php b/inc/3rdparty/FlattrItem.class.php index c940fcd65..0d3e69d0d 100644 --- a/inc/3rdparty/FlattrItem.class.php +++ b/inc/3rdparty/FlattrItem.class.php @@ -9,9 +9,9 @@ class FlattrItem { public $flattrItemURL; public $numflattrs; - public function checkItem($urltoflattr) { - $this->cacheflattrfile($urltoflattr); - $flattrResponse = file_get_contents(CACHE . "/flattr/".base64_encode($urltoflattr).".cache"); + public function checkItem($urltoflattr,$id) { + $this->cacheflattrfile($urltoflattr, $id); + $flattrResponse = file_get_contents(CACHE . "/flattr/".$id.".cache"); if($flattrResponse != FALSE) { $result = json_decode($flattrResponse); if (isset($result->message)){ @@ -33,15 +33,15 @@ class FlattrItem { } } - private function cacheflattrfile($urltoflattr) { + private function cacheflattrfile($urltoflattr, $id) { if (!is_dir(CACHE . '/flattr')) { mkdir(CACHE . '/flattr', 0777); } // if a cache flattr file for this url already exists and it's been less than one day than it have been updated, see in /cache - if ((!file_exists(CACHE . "/flattr/".base64_encode($urltoflattr).".cache")) || (time() - filemtime(CACHE . "/flattr/".base64_encode($urltoflattr).".cache") > 86400)) { + if ((!file_exists(CACHE . "/flattr/".$id.".cache")) || (time() - filemtime(CACHE . "/flattr/".$id.".cache") > 86400)) { $askForFlattr = Tools::getFile(FLATTR_API . $urltoflattr); - $flattrCacheFile = fopen(CACHE . "/flattr/".base64_encode($urltoflattr).".cache", 'w+'); + $flattrCacheFile = fopen(CACHE . "/flattr/".$id.".cache", 'w+'); fwrite($flattrCacheFile, $askForFlattr); fclose($flattrCacheFile); } diff --git a/inc/3rdparty/site_config/README.md b/inc/3rdparty/site_config/README.md new file mode 100644 index 000000000..0aff456be --- /dev/null +++ b/inc/3rdparty/site_config/README.md @@ -0,0 +1,6 @@ +Full-Text RSS Site Patterns +--------------------------- + +Site patterns allow you to specify what should be extracted from specific sites. + +Please see http://help.fivefilters.org/customer/portal/articles/223153-site-patterns for more information. \ No newline at end of file diff --git a/inc/3rdparty/site_config/custom/bfmtv.com.txt b/inc/3rdparty/site_config/custom/bfmtv.com.txt new file mode 100644 index 000000000..0ff28d564 --- /dev/null +++ b/inc/3rdparty/site_config/custom/bfmtv.com.txt @@ -0,0 +1,6 @@ +title: //title +body: //h2 | //span[@class='masque'] | //article[@class='corps_article_right'] +prune: no +tidy: no + +test_url: http://www.bfmtv.com/societe/cigarette-electronique-dangers-588622.html \ No newline at end of file diff --git a/inc/3rdparty/site_config/custom/inthepoche.com.txt b/inc/3rdparty/site_config/custom/inthepoche.com.txt new file mode 100644 index 000000000..ede74b976 --- /dev/null +++ b/inc/3rdparty/site_config/custom/inthepoche.com.txt @@ -0,0 +1,7 @@ +title: //title +body: //div[@class='post-content'] + +prune: no +tidy: no + +test_url: http://www.inthepoche.com/?post/poche-hosting \ No newline at end of file diff --git a/inc/3rdparty/site_config/custom/palkeo.com.txt b/inc/3rdparty/site_config/custom/palkeo.com.txt new file mode 100644 index 000000000..e69de29bb diff --git a/inc/3rdparty/site_config/custom/tldp.org.txt b/inc/3rdparty/site_config/custom/tldp.org.txt new file mode 100644 index 000000000..7dd5cdb5c --- /dev/null +++ b/inc/3rdparty/site_config/custom/tldp.org.txt @@ -0,0 +1,6 @@ +title: //title +body: //h2 | //p | //ul +prune: no +tidy: no + +test_url: http://www.tldp.org/HOWTO/Plug-and-Play-HOWTO-7.html \ No newline at end of file diff --git a/inc/3rdparty/site_config/index.php b/inc/3rdparty/site_config/index.php new file mode 100644 index 000000000..a3d5f7397 --- /dev/null +++ b/inc/3rdparty/site_config/index.php @@ -0,0 +1,3 @@ + \ No newline at end of file diff --git a/inc/3rdparty/site_config/standard/.wikipedia.org.txt b/inc/3rdparty/site_config/standard/.wikipedia.org.txt new file mode 100644 index 000000000..8b98ae4bd --- /dev/null +++ b/inc/3rdparty/site_config/standard/.wikipedia.org.txt @@ -0,0 +1,19 @@ +title: //h1[@id='firstHeading'] +body: //div[@id = 'bodyContent'] +strip_id_or_class: editsection +#strip_id_or_class: toc +strip_id_or_class: vertical-navbox +strip: //table[@id='toc'] +strip: //div[@id='catlinks'] +strip: //div[@id='jump-to-nav'] +strip: //div[@class='thumbcaption']//div[@class='magnify'] +strip: //table[@class='navbox'] +strip: //table[contains(@class, 'infobox')] +strip: //div[@class='dablink'] +strip: //div[@id='contentSub'] +strip: //table[contains(@class, 'metadata')] +strip: //*[contains(@class, 'noprint')] +strip: //span[@title='pronunciation:'] +prune: no +tidy: no +test_url: http://en.wikipedia.org/wiki/Christopher_Lloyd \ No newline at end of file diff --git a/inc/3rdparty/site_config/standard/index.php b/inc/3rdparty/site_config/standard/index.php new file mode 100644 index 000000000..a3d5f7397 --- /dev/null +++ b/inc/3rdparty/site_config/standard/index.php @@ -0,0 +1,3 @@ + \ No newline at end of file diff --git a/inc/3rdparty/site_config/standard/version.php b/inc/3rdparty/site_config/standard/version.php new file mode 100644 index 000000000..e61807ed6 --- /dev/null +++ b/inc/3rdparty/site_config/standard/version.php @@ -0,0 +1,2 @@ +executeQuery($sql_update, $params_update); + $config = $this->getConfigUser($userId); + + if (!isset ($user_config[$key])) { + $sql = "INSERT INTO users_config (`value`, `user_id`, `name`) VALUES (?, ?, ?)"; + } + else { + $sql = "UPDATE users_config SET `value`=? WHERE `user_id`=? AND `name`=?"; + } + + $params = array($value, $userId, $key); + $query = $this->executeQuery($sql, $params); } private function executeQuery($sql, $params) { diff --git a/inc/poche/Poche.class.php b/inc/poche/Poche.class.php index 18860ddc6..1ba8e7c14 100644 --- a/inc/poche/Poche.class.php +++ b/inc/poche/Poche.class.php @@ -105,10 +105,18 @@ class Poche public function themeIsInstalled() { # Twig is an absolute requirement for Poche to function. Abort immediately if the Composer installer hasn't been run yet if (! self::$canRenderTemplates) { - $this->notInstalledMessage = 'Twig does not seem to be installed. Please initialize the Composer installation to automatically fetch dependencies. Have a look at the documentation.'; + $this->notInstalledMessage = 'Twig does not seem to be installed. Please initialize the Composer installation to automatically fetch dependencies. Have a look at the documentation.'; return false; } + + if (! is_writable(CACHE)) { + $this->notInstalledMessage = '
You don\'t have write access on cache directory.
'; + + self::$canRenderTemplates = false; + + return false; + } # Check if the selected theme and its requirements are present if (! is_dir(THEME . '/' . $this->getTheme())) { @@ -145,16 +153,11 @@ class Poche if (empty($configSalt)) { $msg = 'You have not yet filled in the SALT value in the config.inc.php file.
'; - } else if (! is_writable(CACHE)) { - Tools::logm('you don\'t have write access on cache directory'); - $msg = 'You don\'t have write access on cache directory.
'; } else if (STORAGE == 'sqlite' && ! file_exists(STORAGE_SQLITE)) { Tools::logm('sqlite file doesn\'t exist'); $msg = 'sqlite file doesn\'t exist, you can find it in install folder. Copy it in /db folder.
'; - } else if (file_exists(ROOT . '/install/update.php') && ! DEBUG_POCHE) { - $msg = 'It\'s your first time here? Please copy /install/poche.sqlite in db folder. Then, delete install folder.
If you have already installed poche, an update is needed by clicking here.
If you want to update your poche, you just have to delete /install folder.
To install your poche with sqlite, copy /install/poche.sqlite in /db and delete the folder /install. you have to delete the /install folder before using poche.
you have to delete the /install folder before using poche.
'; } else if (STORAGE == 'sqlite' && ! is_writable(STORAGE_SQLITE)) { Tools::logm('you don\'t have write access on sqlite file'); $msg = 'You don\'t have write access on sqlite file.
'; @@ -255,7 +258,7 @@ class Poche while (($theme = readdir($handle)) !== false) { # Themes are stored in a directory, so all directory names are themes # @todo move theme installation data to database - if (! is_dir(THEME . '/' . $theme) || in_array($theme, array('..', '.'))) { + if (! is_dir(THEME . '/' . $theme) || in_array($theme, array('..', '.', '.git'))) { continue; } @@ -330,7 +333,7 @@ class Poche $msg = 'error : can\'t delete link #' . $id; } Tools::logm($msg); - Tools::redirect('?'); + Tools::redirect(); break; case 'toggle_fav' : $this->store->favoriteById($id, $this->user->getId()); @@ -381,17 +384,17 @@ class Poche $tidy = tidy_parse_string($content, array('indent'=>true, 'show-body-only' => true), 'UTF8'); $tidy->cleanRepair(); $content = $tidy->value; - - # flattr checking - $flattr = new FlattrItem(); - $flattr->checkItem($entry['url']); - - $tpl_vars = array( - 'entry' => $entry, - 'content' => $content, - 'flattr' => $flattr - ); } + + # flattr checking + $flattr = new FlattrItem(); + $flattr->checkItem($entry['url'],$entry['id']); + + $tpl_vars = array( + 'entry' => $entry, + 'content' => $content, + 'flattr' => $flattr + ); } else { Tools::logm('error in view call : entry is null'); @@ -404,6 +407,7 @@ class Poche 'page_links' => '', 'nb_results' => '', ); + if (count($entries) > 0) { $this->pagination->set_total(count($entries)); $page_links = $this->pagination->page_links('?view=' . $view . '&sort=' . $_SESSION['sort'] . '&'); diff --git a/inc/poche/config.inc.php.new b/inc/poche/config.inc.php.new index 48cc5783b..255b97e6c 100755 --- a/inc/poche/config.inc.php.new +++ b/inc/poche/config.inc.php.new @@ -26,7 +26,7 @@ define ('STORAGE_PASSWORD', 'poche'); ################################################################################# define ('MODE_DEMO', FALSE); -define ('DEBUG_POCHE', true); +define ('DEBUG_POCHE', FALSE); define ('DOWNLOAD_PICTURES', FALSE); define ('CONVERT_LINKS_FOOTNOTES', FALSE); define ('REVERT_FORCED_PARAGRAPH_ELEMENTS', FALSE); @@ -49,8 +49,12 @@ define ('CACHE', ROOT . '/cache'); define ('PAGINATION', '10'); -define ('POCHE_VERSION', '1.0-beta5'); +define ('POCHE_VERSION', '1.0.0'); -define ('IMPORT_POCKET_FILE', ROOT . '/ril_export.html'); -define ('IMPORT_READABILITY_FILE', ROOT . '/readability'); -define ('IMPORT_INSTAPAPER_FILE', ROOT . '/instapaper-export.html'); \ No newline at end of file +define ('POCKET_FILE', '/ril_export.html'); +define ('READABILITY_FILE', '/readability'); +define ('INSTAPAPER_FILE', '/instapaper-export.html'); + +define ('IMPORT_POCKET_FILE', ROOT . POCKET_FILE); +define ('IMPORT_READABILITY_FILE', ROOT . READABILITY_FILE); +define ('IMPORT_INSTAPAPER_FILE', ROOT . INSTAPAPER_FILE); \ No newline at end of file diff --git a/inc/poche/define.inc.php b/inc/poche/define.inc.php deleted file mode 100644 index 40f77b5c2..000000000 --- a/inc/poche/define.inc.php +++ /dev/null @@ -1,39 +0,0 @@ - - * @copyright 2013 - * @license http://www.wtfpl.net/ see COPYING file - */ - -define ('STORAGE','sqlite'); # postgres, mysql, sqlite -define ('STORAGE_SERVER', 'localhost'); # leave blank for sqlite -define ('STORAGE_DB', 'poche'); # only for postgres & mysql -define ('STORAGE_SQLITE', __DIR__ . '/../../db/poche.sqlite'); -define ('STORAGE_USER', 'postgres'); # leave blank for sqlite -define ('STORAGE_PASSWORD', 'postgres'); # leave blank for sqlite - -define ('MODE_DEMO', FALSE); -define ('DEBUG_POCHE', FALSE); -define ('DOWNLOAD_PICTURES', FALSE); -define ('SHARE_TWITTER', TRUE); -define ('SHARE_MAIL', TRUE); -define ('SHARE_SHAARLI', FALSE); -define ('SHAARLI_URL', 'http://myshaarliurl.com'); -define ('FLATTR', TRUE); -define ('FLATTR_API', 'https://api.flattr.com/rest/v2/things/lookup/?url='); -define ('NOT_FLATTRABLE', '0'); -define ('FLATTRABLE', '1'); -define ('FLATTRED', '2'); -define ('ABS_PATH', 'assets/'); -define ('TPL', __DIR__ . '/../../tpl'); -define ('LOCALE', __DIR__ . '/../../locale'); -define ('CACHE', __DIR__ . '/../../cache'); -define ('PAGINATION', '10'); -define ('THEME', 'light'); - -define ('IMPORT_POCKET_FILE', './ril_export.html'); -define ('IMPORT_READABILITY_FILE', './readability'); -define ('IMPORT_INSTAPAPER_FILE', './instapaper-export.html'); \ No newline at end of file diff --git a/install/update.php b/install/update.php deleted file mode 100644 index 9548d334c..000000000 --- a/install/update.php +++ /dev/null @@ -1,77 +0,0 @@ - - - - - - - - - -To update your poche, please fill the following fields.
--
- -login($_POST['login'], sha1($_POST['password'] . $_POST['login'] . SALT)); - if ($user != array()) { - $myconfig_file = '../inc/poche/myconfig.inc.php'; - # just change version number in config file - - if (!is_writable('../inc/poche/myconfig.inc.php')) { - die('You don\'t have write access to open ./inc/poche/myconfig.inc.php.'); - } - - if (file_exists($myconfig_file)) - { - $content = str_replace('1.0-beta3', '1.0-beta4', file_get_contents($myconfig_file)); - file_put_contents($myconfig_file, $content); - } -?> -your poche is up to date!
-don't forget to delete ./install/ folder after the update.
- - - - \ No newline at end of file diff --git a/themes b/themes deleted file mode 160000 index 689dcedf8..000000000 --- a/themes +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 689dcedf8d6c7cf5e8424654fef4fd9687288dc1 diff --git a/themes/README.md b/themes/README.md new file mode 100644 index 000000000..76ac8ab07 --- /dev/null +++ b/themes/README.md @@ -0,0 +1,31 @@ +# poche-themes + +themes created by poche users + +## list of themes + +* dark ([preview](https://raw.github.com/inthepoche/poche-themes/master/dark/screenshot.jpg)) +* dmagenta ([preview](https://raw.github.com/inthepoche/poche-themes/master/dmagenta/screenshot.jpg)) +* solarized ([preview](https://raw.github.com/inthepoche/poche-themes/master/solarized/screenshot.jpg)) +* solarized-dark ([preview](https://raw.github.com/inthepoche/poche-themes/master/solarized-dark/screenshot.jpg)) + +## installation + +In your poche folder: + +``` +git submodule init +git submodule update +``` + +Then, in your config screen, select your favorite theme. + +That's all ! + +## create a theme + +Just have a look to this short documentation : http://inthepoche.com/doc/doku.php?id=designers:creating_theme + +## send a theme + +Send your theme by email at support@inthepoche.com. diff --git a/themes/dark/README.md b/themes/dark/README.md new file mode 100644 index 000000000..92077994a --- /dev/null +++ b/themes/dark/README.md @@ -0,0 +1,3 @@ +# dark theme + +theme created by Nicolas Lœuillet aka nico_somb \ No newline at end of file diff --git a/themes/dark/css/style-dark.css b/themes/dark/css/style-dark.css new file mode 100644 index 000000000..41782c485 --- /dev/null +++ b/themes/dark/css/style-dark.css @@ -0,0 +1,74 @@ +body { + color: #d4d4d4; + background-color: #262627; +} + +a, +a:hover, +a:visited { + color: #d4d4d4; +} + +a.back span { + background-image: url('../img/dark/left.png'); +} + +a.top span { + background-image: url('../img/dark/top.png'); +} + +a.fav span, +a.fav-off span:hover { + background-image: url('../img/dark/star-on.png'); +} + +a.fav span:hover, +a.fav-off span { + background-image: url('../img/dark/star-off.png'); +} + +a.archive span, +a.archive-off span:hover { + background-image: url('../img/dark/checkmark-on.png'); +} + +a.archive span:hover, +a.archive-off span { + background-image: url('../img/dark/checkmark-off.png'); +} + +a.twitter span { + background-image: url('../img/dark/twitter.png'); +} + +a.shaarli span { + background-image: url('../img/dark/shaarli.png'); +} + +a.flattr span { + background-image: url('../img/dark/flattr.png'); +} + +a.email span { + background-image: url('../img/dark/envelop.png'); +} + +a.delete span { + background-image: url('../img/dark/remove.png'); +} + +a.link span { + background-image: url('../img/dark/link.png'); +} + +a.bad-display span { + background-image: url('../img/dark/bad-display.png'); +} + +.pagination a { + color: #aaa; +} + +#article_toolbar { + background: #262627; +} \ No newline at end of file diff --git a/themes/dark/img/dark/backtotop.png b/themes/dark/img/dark/backtotop.png new file mode 100755 index 000000000..051238ef9 Binary files /dev/null and b/themes/dark/img/dark/backtotop.png differ diff --git a/themes/dark/img/dark/bad-display.png b/themes/dark/img/dark/bad-display.png new file mode 100755 index 000000000..6866799fc Binary files /dev/null and b/themes/dark/img/dark/bad-display.png differ diff --git a/themes/dark/img/dark/checkmark-off.png b/themes/dark/img/dark/checkmark-off.png new file mode 100644 index 000000000..3db5a06dc Binary files /dev/null and b/themes/dark/img/dark/checkmark-off.png differ diff --git a/themes/dark/img/dark/checkmark-on.png b/themes/dark/img/dark/checkmark-on.png new file mode 100644 index 000000000..cd3abb2c0 Binary files /dev/null and b/themes/dark/img/dark/checkmark-on.png differ diff --git a/themes/dark/img/dark/down.png b/themes/dark/img/dark/down.png new file mode 100644 index 000000000..b9d536a7c Binary files /dev/null and b/themes/dark/img/dark/down.png differ diff --git a/themes/dark/img/dark/envelop.png b/themes/dark/img/dark/envelop.png new file mode 100644 index 000000000..6be1c8864 Binary files /dev/null and b/themes/dark/img/dark/envelop.png differ diff --git a/themes/dark/img/dark/flattr.png b/themes/dark/img/dark/flattr.png new file mode 100755 index 000000000..0404aaeaf Binary files /dev/null and b/themes/dark/img/dark/flattr.png differ diff --git a/themes/dark/img/dark/left.png b/themes/dark/img/dark/left.png new file mode 100644 index 000000000..a0a53631e Binary files /dev/null and b/themes/dark/img/dark/left.png differ diff --git a/themes/dark/img/dark/link.png b/themes/dark/img/dark/link.png new file mode 100755 index 000000000..db62819d5 Binary files /dev/null and b/themes/dark/img/dark/link.png differ diff --git a/themes/dark/img/dark/remove.png b/themes/dark/img/dark/remove.png new file mode 100644 index 000000000..f8ad56a3e Binary files /dev/null and b/themes/dark/img/dark/remove.png differ diff --git a/themes/dark/img/dark/shaarli.png b/themes/dark/img/dark/shaarli.png new file mode 100644 index 000000000..1eb30f60b Binary files /dev/null and b/themes/dark/img/dark/shaarli.png differ diff --git a/themes/dark/img/dark/star-off.png b/themes/dark/img/dark/star-off.png new file mode 100644 index 000000000..6a0133a79 Binary files /dev/null and b/themes/dark/img/dark/star-off.png differ diff --git a/themes/dark/img/dark/star-on.png b/themes/dark/img/dark/star-on.png new file mode 100644 index 000000000..a9f96eaac Binary files /dev/null and b/themes/dark/img/dark/star-on.png differ diff --git a/themes/dark/img/dark/top.png b/themes/dark/img/dark/top.png new file mode 100644 index 000000000..954a8c0ac Binary files /dev/null and b/themes/dark/img/dark/top.png differ diff --git a/themes/dark/img/dark/twitter.png b/themes/dark/img/dark/twitter.png new file mode 100644 index 000000000..cfcfe4195 Binary files /dev/null and b/themes/dark/img/dark/twitter.png differ diff --git a/themes/dark/screenshot.jpg b/themes/dark/screenshot.jpg new file mode 100644 index 000000000..daaad6c9e Binary files /dev/null and b/themes/dark/screenshot.jpg differ diff --git a/themes/default/_bookmarklet.twig b/themes/default/_bookmarklet.twig new file mode 100644 index 000000000..2f3b2d165 --- /dev/null +++ b/themes/default/_bookmarklet.twig @@ -0,0 +1,3 @@ + \ No newline at end of file diff --git a/themes/default/_footer.twig b/themes/default/_footer.twig new file mode 100644 index 000000000..2b8958549 --- /dev/null +++ b/themes/default/_footer.twig @@ -0,0 +1,4 @@ + \ No newline at end of file diff --git a/themes/default/_head.twig b/themes/default/_head.twig new file mode 100644 index 000000000..2b9e45820 --- /dev/null +++ b/themes/default/_head.twig @@ -0,0 +1,11 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/themes/default/_menu.twig b/themes/default/_menu.twig new file mode 100644 index 000000000..699d6a0c9 --- /dev/null +++ b/themes/default/_menu.twig @@ -0,0 +1,7 @@ +{% trans "You can poche a link by several methods:" %} (?)
+{% trans "Please execute the import script locally, it can take a very long time." %}
+{% trans "More infos in the official doc:" %} inthepoche.com
+{% trans "Click here" %} {% trans "to export your poche datas." %}
+{% endblock %} \ No newline at end of file diff --git a/themes/default/css/knacss.css b/themes/default/css/knacss.css new file mode 100644 index 000000000..ca0696b7a --- /dev/null +++ b/themes/default/css/knacss.css @@ -0,0 +1 @@ +html{font-size:62.5%}body{font-family:"Century Gothic",helvetica,arial,sans-serif;font-size:1.4em;line-height:1.5;color:#000;background-color:#FFF}p,ul,ol,dl,blockquote,pre,td,th,label,textarea,caption,details,figure,hgroup{margin:.75em 0 0;font-size:1em;line-height:1.5}h1,.h1-like{margin:.8077em 0 0 0;font-size:1.8571em;font-weight:normal;line-height:1.6154em}h2,.h2-like{margin:.875em 0 0 0;font-size:1.7143em;font-weight:normal;line-height:1.75em}h3,.h3-like{margin:.9545em 0 0 0;font-size:1.5714em;font-weight:normal;line-height:1.909em}h4,.h4-like{margin:1.05em 0 0 0;font-size:1.4286em;font-weight:normal;line-height:1.05em}h5,.h5-like{margin:1.1667em 0 0 0;font-size:1.2857em;font-weight:normal;line-height:1.1667em}h6,.h6-like{margin:1.3125em 0 0 0;font-size:1.1429em;font-weight:normal;line-height:1.3125em}.smaller{font-size:.7143em}.small{font-size:.8571em}.big{font-size:1.1429em}.bigger{font-size:1.2857em}.biggest{font-size:1.4286em}html,body,textarea,figure,label{margin:0;padding:0}ul,ol{padding-left:2em}code,pre,samp,kbd{font-family:consolas,'DejaVu Sans Mono',courier,monospace;line-height:1em;white-space:pre-wrap}code,kbd,mark{border-radius:2px}em{font-style:italic}strong{font-weight:bold}kbd{padding:0 2px;border:1px solid #999}code{padding:2px 4px;color:#B11;background:rgba(0,0,0,.04)}mark{padding:2px 4px;background:#FF0}table{margin-bottom:1.5em}p:first-child,ul:first-child,ol:first-child,dl:first-child,blockquote:first-child,pre:first-child,h1:first-child,h2:first-child,h3:first-child,h4:first-child,h5:first-child,h6:first-child{margin-top:0}li p,li ul,li ol{margin-top:0;margin-bottom:0}img,table,td,blockquote,code,pre,textarea,input,video{max-width:100%}div,textarea,table,td,th,code,pre,samp{word-wrap:break-word;-webkit-hyphens:auto;-moz-hyphens:auto;-ms-hyphens:auto;-o-hyphens:auto;hyphens:auto}img{height:auto;vertical-align:middle}#map_canvas img,.gmnoprint img{max-width:none}a img{border:0}body > script{display:none !important}.skip-links{position:absolute}.skip-links a{position:absolute;left:-7000px;padding:.5em;text-decoration:none;color:#FFF;background:#000}.skip-links a:focus{position:static}*{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.mod,.item{overflow:hidden}.row{display:table;width:100%;table-layout:fixed}.row > *,.col{display:table-cell;vertical-align:top}.clear,.line,.row{clear:both}.clearfix:after,.line:after,.mod:after{content:"";display:table;clear:both}.left{float:left}img.left{margin-right:1em}.right{float:right}img.right{margin-left:1em}img.left,img.right{margin-bottom:5px}.center{margin-right:auto;margin-left:auto}.txtleft{text-align:left}.txtright{text-align:right}.txtcenter{text-align:center}.inbl{display:inline-block;margin-right:-.25em;vertical-align:top}.w10{width:10%}.w20{width:20%}.w25{width:25%}.w30{width:30%}.w33{width:33.333%}.w40{width:40%}.w50{width:50%}.w60{width:60%}.w66{width:66.666%}.w70{width:70%}.w75{width:75%}.w80{width:80%}.w90{width:90%}.w100{width:100%}.w50p{width:50px}.w100p{width:100px}.w150p{width:150px}.w200p{width:200px}.w300p{width:300px}.w400p{width:400px}.w500p{width:500px}.w600p{width:600px}.w700p{width:700px}.w800p{width:800px}.w960p{width:960px}.mw960p{max-width:960px}.m-reset,.ma0{margin:0 !important}.p-reset,.pa0{padding:0 !important}.ma1,.mas{margin:10px !important}.ma2,.mam{margin:20px !important}.ma3,.mal{margin:30px !important}.pa1,.pas{padding:10px}.pa2,.pam{padding:20px}.pa3,.pal{padding:30px}.mt0,.mtn{margin-top:0 !important}.mt1,.mts{margin-top:10px !important}.mt2,.mtm{margin-top:20px !important}.mt3,.mtl{margin-top:30px !important}.mr0,.mrn{margin-right:0}.mr1,.mrs{margin-right:10px}.mr2,.mrm{margin-right:20px}.mr3,.mrl{margin-right:30px}.mb0,.mbn{margin-bottom:0 !important}.mb1,.mbs{margin-bottom:10px !important}.mb2,.mbm{margin-bottom:20px !important}.mb3,.mbl{margin-bottom:30px !important}.ml0,.mln{margin-left:0}.ml1,.mls{margin-left:10px}.ml2,.mlm{margin-left:20px}.ml3,.mll{margin-left:30px}.pt0,.ptn{padding-top:0}.pt1,.pts{padding-top:10px}.pt2,.ptm{padding-top:20px}.pt3,.ptl{padding-top:30px}.pr0,.prn{padding-right:0}.pr1,.prs{padding-right:10px}.pr2,.prm{padding-right:20px}.pr3,.prl{padding-right:30px}.pb0,.pbn{padding-bottom:0}.pb1,.pbs{padding-bottom:10px}.pb2,.pbm{padding-bottom:20px}.pb3,.pbl{padding-bottom:30px}.pl0,.pln{padding-left:0}.pl1,.pls{padding-left:10px}.pl2,.plm{padding-left:20px}.pl3,.pll{padding-left:30px}.visually-hidden{position:absolute;left:-7000px;overflow:hidden}[dir=rtl] .visually-hidden{right:-7000px;left:auto}.desktop-hidden{display:none}form,fieldset{border:none}input,button,select,label,.btn{font-family:inherit;vertical-align:middle}textarea{font-family:inherit;resize:vertical}.ie67 .clearfix,.ie67 .line,.ie67 .mod,.ie67 .row,.ie67 .col{zoom:1}.ie67 .btn,.ie67 .col,.ie67 .inbl{display:inline;zoom:1}.ie8 img{width:auto}@media print{p,blockquote{orphans:2;widows:2}blockquote,ul,ol{page-break-inside:avoid}h1,h2,h3,caption{page-break-after:avoid}}@media(orientation:landscape)and(max-device-width:768px){html,body{-webkit-text-size-adjust:100%}}[class*=grid] > *{float:left}[class*=grid] > * + *{margin-left:2%}.grid2 > *{width:49%}.grid3 > *{width:32%}.grid4 > *{width:23.5%}.grid5 > *{width:18.4%}.grid6 > *{width:15%}.grid2-1 > *:first-child,.grid1-2 > * + *{width:66%}.grid1-2 > *:first-child,.grid2-1 > * + *{width:32%}.grid1-3 > *:first-child,.grid3-1 > * + *{width:23.5%}.grid3-1 > *:first-child,.grid1-3 > * + *{width:74.5%}table,.table{max-width:100%;border-collapse:collapse;table-layout:fixed;vertical-align:top}table{width:100%}.table{display:table}caption{padding:10px;font-style:italic;color:#555}table{border:1px solid #CCC}tr > * + *{border-left:1px solid #CCC}th,td{padding:.3em .8em;border-bottom:1px solid #CCC;text-align:left}td{color:#333}.alternate{border:0}.alternate tbody{border:1px solid #CCC}.alternate thead tr > * + *{border-left:0}.alternate tbody tr > * + *{border-left:1px solid #CCC}.alternate-vert{border:0;border-right:1px solid #CCC}.alternate-vert tr >:first-child{border-bottom:0}.alternate-vert tr > * + *{border-top:1px solid #CCC}.striped tbody tr:nth-child(odd){background:#EEE;background:rgba(0,0,0,.05)}.striped-vert tr >:first-child{background:#EEE;background:rgba(0,0,0,.05)}.btn{display:inline-block}label{display:inline-block;vertical-align:middle;cursor:pointer}legend{border:0;white-space:normal}button,input,select{margin:0;font-family:"Century Gothic",helvetica,arial,sans-serif;font-size:100%;vertical-align:middle}textarea{min-height:5em;overflow:auto;font-size:1.75em;vertical-align:top;resize:vertical}}ol.styled{counter-reset:styled}ol.styled > li{counter-increment:styled;margin-bottom:.3em;list-style-type:none}ol.styled > li:before{content:counter(styled);display:inline-block;width:1em;height:1em;margin-right:.4em;padding:2px;border-radius:50%;text-align:center;text-indent:-.1em;font-size:.9em;line-height:1;vertical-align:middle;color:#FFF;background:rgba(0,0,0,.5)}@media(min-width:1280px){.large-hidden,.tablet-hidden{display:none !important}.large-visible{display:block !important}.large-no-float{float:none}.large-inbl{display:inline-block;float:none;vertical-align:top}.large-row{display:table;width:100% !important;table-layout:fixed}.large-col{display:table-cell;vertical-align:top}.large-w25{width:25% !important}.large-w33{width:33.3333% !important}.large-w50{width:50% !important}.large-w66{width:66.6666% !important}.large-w75{width:75% !important}.large-w100{display:block !important;float:none !important;clear:none !important;width:auto !important;margin-right:0 !important;margin-left:0 !important;border:0}.large-ma0,.large-man{margin:0 !important}}@media(max-width:768px){.w60,.w66,.w70,.w75,.w80,.w90,.w100,.w600p,.w700p,.w800p,.w960p,.mw960p,.medium-wauto{width:auto}.medium-hidden,.tablet-hidden{display:none !important}.medium-visible{display:block !important}.medium-no-float{float:none}.medium-inbl{display:inline-block;float:none;vertical-align:top}.medium-row{display:table;width:100% !important;table-layout:fixed}.medium-col{display:table-cell;vertical-align:top}.medium-w25{width:25% !important}.medium-w33{width:33.3333% !important}.medium-w50{width:50% !important}.medium-w66{width:66.6666% !important}.medium-w75{width:75% !important}.medium-w100{display:block !important;float:none !important;clear:none !important;width:auto !important;margin-right:0 !important;margin-left:0 !important;border:0}.medium-ma0,.medium-man{margin:0 !important}.grid4 > *{width:49% !important}.grid4 >:first-child + * + *{margin-left:0 !important}.grid6 > *{width:32% !important}.grid6 >:first-child + * + * + *{margin-left:0 !important}}@media(max-width:640px){.mod,.item,.col,fieldset{display:block !important;float:none !important;clear:none !important;width:auto !important;margin-right:0 !important;margin-left:0 !important;border:0}.w30,.w33,.w40,.w50,.w300p,.w400p,.w500p{width:auto}.row{display:block !important;width:100% !important}.tiny-hidden,.phone-hidden{display:none !important}.tiny-visible{display:block !important}.tiny-no-float{float:none}.tiny-inbl{display:inline-block;float:none;vertical-align:top}.tiny-row{display:table;width:100% !important;table-layout:fixed}.tiny-col{display:table-cell;vertical-align:top}th,td{display:block !important;width:auto !important;text-align:left !important}thead{display:none}.tiny-w25{width:25% !important}.tiny-w33{width:33.3333% !important}.tiny-w50{width:50% !important}.tiny-w66{width:66.6666% !important}.tiny-w75{width:75% !important}.tiny-w100{display:block !important;float:none !important;clear:none !important;width:auto !important;margin-right:0 !important;margin-left:0 !important;border:0}.tiny-ma0,.tiny-man{margin:0 !important}} \ No newline at end of file diff --git a/themes/default/css/messages.css b/themes/default/css/messages.css new file mode 100644 index 000000000..46b547956 --- /dev/null +++ b/themes/default/css/messages.css @@ -0,0 +1,75 @@ +.messages { + display: block; + clear: both; + width: 400px; + margin: 10px auto 10px; + padding: 10px 0; + -moz-border-radius: 4px; + border-radius: 4px; +} + +.messages a.closeMessage { + display: none; + float: right; + width: 16px; + height: 16px; + margin: -14px -8px 0 0; + background: url(../img/messages/close.png) no-repeat; +} + +/*.messages:hover a.closeMessage { visibility:visible; }*/ + +.messages p { + margin: 3px 0 3px 10px !important; + padding: 0 10px 0 23px !important; + font-size: 14px; + line-height: 16px; +} + +.messages.error { + border: 1px solid #c42608; + color: #c00 !important; + background: #fff0ef; +} + +.messages.error p { + color: #c00 !important; + background: url(../img/messages/cross.png) no-repeat 0 50%; +} + +.messages.success { + border: 1px solid #6dc70c; + background: #e0fbcc; +} + +.messages.success p { + color: #2b6301 !important; + background: url(../img/messages/tick.png) no-repeat 0 50%; +} + +.messages.warning { + border: 1px solid #ebcd41; + color: #000; + background: #fffcd3; +} + +.messages.warning p { + color: #5f4e01; + background: url(../img/messages/warning.png) no-repeat 0 50%; +} + +.messages.information, +.messages.info { + border: 1px solid #82aee7; + background: #dfebfb; +} + +.messages.information p, +.messages.info p { + color: #064393; + background: url(../img/messages/help.png) no-repeat 0 50%; +} + +.messages.information a { + text-decoration: underline; +} diff --git a/themes/default/css/print.css b/themes/default/css/print.css new file mode 100644 index 000000000..9aefa779e --- /dev/null +++ b/themes/default/css/print.css @@ -0,0 +1,48 @@ +/* ### Layout ### */ + +body { + font-family: Serif; + background-color: #fff; +} + +@page { + margin: 1cm; +} + +img { + max-width: 100% !important; +} + +/* ### Content ### */ + +/* Hide useless blocks */ +body > header, +#links, +#sort, +body > footer, +.top_link, +div.tools, +header div, +.messages, +.entrie + .results { + display: none !important; +} + +article { + border: none !important; +} + +/* Add URL after links */ +.vieworiginal a:after { + content: " (" attr(href) ")"; +} + +/* Add explanation after abbr */ +abbr[title]:after { + content: " (" attr(title) ")"; +} + +/* Change border on current pager item */ +.pagination span.current { + border-style: dashed; +} diff --git a/themes/default/css/style-default.css b/themes/default/css/style-default.css new file mode 100644 index 000000000..9dc7c0b0a --- /dev/null +++ b/themes/default/css/style-default.css @@ -0,0 +1,55 @@ +a.back span { + background-image: url('../img/default/left.png'); +} + +a.top span { + background-image: url('../img/default/top.png'); +} + +a.fav span, +a.fav-off span:hover { + background-image: url('../img/default/star-on.png'); +} + +a.fav span:hover, +a.fav-off span { + background-image: url('../img/default/star-off.png'); +} + +a.archive span, +a.archive-off span:hover { + background-image: url('../img/default/checkmark-on.png'); +} + +a.archive span:hover, +a.archive-off span { + background-image: url('../img/default/checkmark-off.png'); +} + +a.twitter span { + background-image: url('../img/default/twitter.png'); +} + +a.shaarli span { + background-image: url('../img/default/shaarli.png'); +} + +a.flattr span { + background-image: url('../img/default/flattr.png'); +} + +a.email span { + background-image: url('../img/default/envelop.png'); +} + +a.delete span { + background-image: url('../img/default/remove.png'); +} + +a.link span { + background-image: url('../img/default/link.png'); +} + +a.bad-display span { + background-image: url('../img/default/bad-display.png'); +} \ No newline at end of file diff --git a/themes/default/css/style.css b/themes/default/css/style.css new file mode 100644 index 000000000..eb04f0c48 --- /dev/null +++ b/themes/default/css/style.css @@ -0,0 +1,321 @@ +body { + margin: 10px; + font-family: 'Roboto',Verdana,Geneva,sans-serif; + font-size: 16px; + color: #000; +} + +header { + text-align: center; +} + +header h1 { + font-size: 1.3em; +} + +a, +a:hover, +a:visited { + color: #000; +} + +.bouton { + border: none; + border-radius: 2px; + color: #fff; + background-color: #000; +} + +.bouton:hover { + color: #f1f1f1; + background-color: #222; + cursor: pointer; +} + +#main { + margin: 0 auto; +} + +#main #links { + padding: 0; + text-align: center; + font-size: 0.9em; + list-style-type: none; +} + +#main #links li { + display: inline; +} + +#main #links li .current { + -webkit-border-radius: 2px; + border-radius: 2px; + color: #fff; + background-color: #000; +} + +#main #sort { + padding: 0; + text-align: center; + list-style-type: none; + opacity: 0.5; +} + +#main #sort li { + display: inline; + font-size: 0.9em; +} + +#main #sort li + li { + margin-left: 10px; +} + +#main #sort a { + padding: 2px 2px 0; + vertical-align: middle; +} + +#main #sort img { + vertical-align: baseline; +} +#main #sort img:hover { + cursor: pointer; +} + +#links a { + padding: 5px 10px; + text-decoration: none; +} + +#links a:hover { + -webkit-border-radius: 2px; + border-radius: 2px; + color: #f1f1f1; + background-color: #040707; +} + +/*** ***/ + +/*** LINKS DISPLAY ***/ + +#main .tool { + text-decoration: none; + cursor: pointer; +} + +#main #content { + margin-top: 20px; +} + +#main #content h2 { + text-decoration: none; + font-size: 1.3em; +} + +#main #content .entrie { + margin-top: 15px; + padding-bottom: 15px; + border-bottom: 1px dashed #222; + overflow: hidden; +} + +/* First entry */ +#main #content .results + .entrie { + clear: both; + margin-top: 0; +} + +#main .entrie .tools { + float: right; + text-align: right; + list-style-type: none; + opacity: 0.5; +} + +#main .entrie .tools .tool span { + display: inline-block; + width: 16px; + height: 16px; + /* Hide textual content */ + overflow: hidden; + text-align: left; + text-indent: -9999px; +} + +/*** ***/ + +/*** ARTICLE PAGE ***/ + +#article { + margin: 0 auto; +} + +#article header { + border-bottom: 1px solid #222; +} + +#article header { + text-align: left; +} + +#article header h1 small { + float: right; + font-size: 0.6em; +} + +#article header a { + text-decoration: none; +} + +.backhome { + display: inline; +} + +.results { + padding: 15px 0; + overflow: hidden; +} + +.nb-results { + float: left; + font-size: 0.9em; + line-height: 24px; + vertical-align: middle; +} + +#article_toolbar { + position: fixed; + bottom: 0; + left: 0; + width: 100%; + height: 50px; + padding-top: 17px; + text-align: center; + color: #fff; + opacity: 0.8; + background: #fff; +} + +#article_toolbar li { + display: inline; + padding-right: 30px; +} + +#article_toolbar .tool { + padding: 0 2px; +} + +#article_toolbar .tool span { + display: inline-block; + width: 16px; + height: 16px; + /* Hide textual content */ + overflow: hidden; + text-align: left; + text-indent: -9999px; +} + +/*** ***/ + +/*** PAGINATION ***/ + +.pagination { + float: right; + text-align: right; +} + +.pagination a { + height: 25px; + margin: 2px; + padding: 4px 8px; + border: 1px solid #d5d5d5; + text-decoration: none; + font-size: 11px; + font-weight: bold; + color: #333; +} + +.pagination a:hover, +.pagination a:active { + background-color: #efefef; +} + +.pagination .current { + height: 25px; + margin: 2px; + padding: 4px 8px; + border: 1px solid #d5d5d5; + text-decoration: none; + font-size: 11px; + font-weight: bold; + color: #000; + background-color: #ccc; +} + +.pagination .disabled { + display: none; +} + +#bookmarklet { + padding: 5px; + border: 1px dashed #808080; + background: #fff; + cursor: move; +} + +.top_link { + display: none; + z-index: 2000; + position: fixed; + right: 15px; + bottom: 15px; + padding: 20px; + -webkit-border-radius: 40px; + -moz-border-radius: 40px; + border-radius: 40px; + opacity: 0.9; + background: #ccc; +} + +footer { + clear: both; +} + +.reading-time { + font-size: 0.8em; +} + +#inputform { + display: none; + margin-top: 5px; + margin-right: auto; + margin-left: auto; + padding-bottom: 5px; + max-width: 300px; + border-radius: 3px; + text-align: center; + color: #fff; + opacity: 0.8; + background-color: rgba(0,0,0,0.9); +} + +a.back span, +a.top span, +a.fav span, +a.fav span:hover, +a.fav-off span, +a.fav-off span:hover, +a.archive span, +a.archive span:hover, +a.archive-off span, +a.archive-off span:hover, +a.twitter span, +a.shaarli span, +a.flattr span, +a.email span, +a.delete span, +a.link span, +a.bad-display span, +a.reading-time span { + background-repeat: no-repeat; +} \ No newline at end of file diff --git a/themes/default/error.twig b/themes/default/error.twig new file mode 100644 index 000000000..c829d12bb --- /dev/null +++ b/themes/default/error.twig @@ -0,0 +1,6 @@ +{% extends "layout.twig" %} +{% block title %}{% trans "plop" %}{% endblock %} +{% block content %} + {{ msg|raw }} +Don't forget the documentation.
+{% endblock %} \ No newline at end of file diff --git a/themes/default/export.twig b/themes/default/export.twig new file mode 100644 index 000000000..4adb95402 --- /dev/null +++ b/themes/default/export.twig @@ -0,0 +1 @@ +{{ export }} \ No newline at end of file diff --git a/themes/default/home.twig b/themes/default/home.twig new file mode 100644 index 000000000..c1b29ec36 --- /dev/null +++ b/themes/default/home.twig @@ -0,0 +1,49 @@ +{% extends "layout.twig" %} +{% block title %} +{% if view == 'fav' %} +{% trans "favoris" %} +{% elseif view == 'archive' %} +{% trans "archive" %} +{% else %} +{% trans "unread" %} +{% endif %} +{% endblock %} +{% block menu %} +{% include '_menu.twig' %} +{% endblock %} +{% block precontent %} + {% if entries|length > 1 %} + + {% endif %} +{% endblock %} +{% block content %} + {% if entries is empty %} + + {% else %} + {% block pager %} + {% if nb_results > 1 %} +{{ entry.content|striptags|slice(0, 300) }}...
+