diff --git a/.gitignore b/.gitignore index b73c4b4..2abed7e 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 bbdd849..0000000 --- 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 c940fcd..0d3e69d 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 0000000..0aff456 --- /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 0000000..0ff28d5 --- /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 0000000..ede74b9 --- /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 0000000..e69de29 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 0000000..7dd5cdb --- /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 0000000..a3d5f73 --- /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 0000000..8b98ae4 --- /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 0000000..a3d5f73 --- /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 0000000..e61807e --- /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 18860dd..1ba8e7c 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 48cc578..255b97e 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 40f77b5..0000000 --- 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 9548d33..0000000 --- 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 689dced..0000000 --- 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 0000000..76ac8ab --- /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 0000000..9207799 --- /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 0000000..41782c4 --- /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 0000000..051238e 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 0000000..6866799 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 0000000..3db5a06 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 0000000..cd3abb2 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 0000000..b9d536a 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 0000000..6be1c88 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 0000000..0404aae 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 0000000..a0a5363 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 0000000..db62819 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 0000000..f8ad56a 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 0000000..1eb30f6 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 0000000..6a0133a 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 0000000..a9f96ea 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 0000000..954a8c0 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 0000000..cfcfe41 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 0000000..daaad6c 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 0000000..2f3b2d1 --- /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 0000000..2b89585 --- /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 0000000..2b9e458 --- /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 0000000..699d6a0 --- /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 0000000..ca0696b --- /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 0000000..46b5479 --- /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 0000000..9aefa77 --- /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 0000000..9dc7c0b --- /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 0000000..eb04f0c --- /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 0000000..c829d12 --- /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 0000000..4adb954 --- /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 0000000..c1b29ec --- /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) }}...
+