]> git.immae.eu Git - github/shaarli/Shaarli.git/commitdiff
Merge pull request #560 from ArthurHoaro/nb-private-shaare
authorArthur <arthur@hoa.ro>
Sat, 14 May 2016 09:11:11 +0000 (11:11 +0200)
committerArthur <arthur@hoa.ro>
Sat, 14 May 2016 09:11:11 +0000 (11:11 +0200)
Private links counter in the header

application/HttpUtils.php
application/Router.php
application/Utils.php
index.php
plugins/markdown/markdown.css
tpl/loginform.html

index c84ba6f05746d404b195607715556a67ccce8eba..2e0792f97a5d2fdbfdf2b8978e2012300f519e54 100644 (file)
@@ -193,7 +193,7 @@ function server_url($server)
 function index_url($server)
 {
     $scriptname = $server['SCRIPT_NAME'];
-    if (endswith($scriptname, 'index.php')) {
+    if (endsWith($scriptname, 'index.php')) {
         $scriptname = substr($scriptname, 0, -9);
     }
     return server_url($server) . $scriptname;
index a1e594a0846b529eedb06dd5ee02c1701b2dc095..2c3934b0079d909af6522ad2b4464ea3a1dedad2 100644 (file)
@@ -63,19 +63,19 @@ class Router
             return self::$PAGE_LINKLIST;
         }
 
-        if (startswith($query, 'do='. self::$PAGE_LOGIN) && $loggedIn === false) {
+        if (startsWith($query, 'do='. self::$PAGE_LOGIN) && $loggedIn === false) {
             return self::$PAGE_LOGIN;
         }
 
-        if (startswith($query, 'do='. self::$PAGE_PICWALL)) {
+        if (startsWith($query, 'do='. self::$PAGE_PICWALL)) {
             return self::$PAGE_PICWALL;
         }
 
-        if (startswith($query, 'do='. self::$PAGE_TAGCLOUD)) {
+        if (startsWith($query, 'do='. self::$PAGE_TAGCLOUD)) {
             return self::$PAGE_TAGCLOUD;
         }
 
-        if (startswith($query, 'do='. self::$PAGE_OPENSEARCH)) {
+        if (startsWith($query, 'do='. self::$PAGE_OPENSEARCH)) {
             return self::$PAGE_OPENSEARCH;
         }
 
@@ -96,23 +96,23 @@ class Router
             return self::$PAGE_LINKLIST;
         }
 
-        if (startswith($query, 'do='. self::$PAGE_TOOLS)) {
+        if (startsWith($query, 'do='. self::$PAGE_TOOLS)) {
             return self::$PAGE_TOOLS;
         }
 
-        if (startswith($query, 'do='. self::$PAGE_CHANGEPASSWORD)) {
+        if (startsWith($query, 'do='. self::$PAGE_CHANGEPASSWORD)) {
             return self::$PAGE_CHANGEPASSWORD;
         }
 
-        if (startswith($query, 'do='. self::$PAGE_CONFIGURE)) {
+        if (startsWith($query, 'do='. self::$PAGE_CONFIGURE)) {
             return self::$PAGE_CONFIGURE;
         }
 
-        if (startswith($query, 'do='. self::$PAGE_CHANGETAG)) {
+        if (startsWith($query, 'do='. self::$PAGE_CHANGETAG)) {
             return self::$PAGE_CHANGETAG;
         }
 
-        if (startswith($query, 'do='. self::$PAGE_ADDLINK)) {
+        if (startsWith($query, 'do='. self::$PAGE_ADDLINK)) {
             return self::$PAGE_ADDLINK;
         }
 
@@ -120,19 +120,19 @@ class Router
             return self::$PAGE_EDITLINK;
         }
 
-        if (startswith($query, 'do='. self::$PAGE_EXPORT)) {
+        if (startsWith($query, 'do='. self::$PAGE_EXPORT)) {
             return self::$PAGE_EXPORT;
         }
 
-        if (startswith($query, 'do='. self::$PAGE_IMPORT)) {
+        if (startsWith($query, 'do='. self::$PAGE_IMPORT)) {
             return self::$PAGE_IMPORT;
         }
 
-        if (startswith($query, 'do='. self::$PAGE_PLUGINSADMIN)) {
+        if (startsWith($query, 'do='. self::$PAGE_PLUGINSADMIN)) {
             return self::$PAGE_PLUGINSADMIN;
         }
 
-        if (startswith($query, 'do='. self::$PAGE_SAVE_PLUGINSADMIN)) {
+        if (startsWith($query, 'do='. self::$PAGE_SAVE_PLUGINSADMIN)) {
             return self::$PAGE_SAVE_PLUGINSADMIN;
         }
 
index 5b8ca508576a94b0bafd0a6ee957a99fd3a7588e..da521cceff728376178f11fe9fea0dae121d46eb 100644 (file)
@@ -41,8 +41,14 @@ function smallHash($text)
 
 /**
  * Tells if a string start with a substring
+ *
+ * @param string $haystack Given string.
+ * @param string $needle   String to search at the beginning of $haystack.
+ * @param bool   $case     Case sensitive.
+ *
+ * @return bool True if $haystack starts with $needle.
  */
-function startsWith($haystack, $needle, $case=true)
+function startsWith($haystack, $needle, $case = true)
 {
     if ($case) {
         return (strcmp(substr($haystack, 0, strlen($needle)), $needle) === 0);
@@ -52,8 +58,14 @@ function startsWith($haystack, $needle, $case=true)
 
 /**
  * Tells if a string ends with a substring
+ *
+ * @param string $haystack Given string.
+ * @param string $needle   String to search at the end of $haystack.
+ * @param bool   $case     Case sensitive.
+ *
+ * @return bool True if $haystack ends with $needle.
  */
-function endsWith($haystack, $needle, $case=true)
+function endsWith($haystack, $needle, $case = true)
 {
     if ($case) {
         return (strcmp(substr($haystack, strlen($haystack) - strlen($needle)), $needle) === 0);
index 90fdac81ee5287b4cb8af343d4056e08b1ed344f..5b8384ba8886fc15258163b9e3cdf295d061b777 100644 (file)
--- a/index.php
+++ b/index.php
@@ -496,9 +496,9 @@ if (isset($_POST['login']))
     else
     {
         ban_loginFailed();
-        $redir = '';
+        $redir = '&username='. $_POST['login'];
         if (isset($_GET['post'])) {
-            $redir = '?post=' . urlencode($_GET['post']);
+            $redir .= '&post=' . urlencode($_GET['post']);
             foreach (array('description', 'source', 'title') as $param) {
                 if (!empty($_GET[$param])) {
                     $redir .= '&' . $param . '=' . urlencode($_GET[$param]);
@@ -569,7 +569,7 @@ function tokenOk($token)
 // This RSS feed cannot be filtered.
 function showDailyRSS() {
     // Cache system
-    $query = $_SERVER["QUERY_STRING"];
+    $query = $_SERVER['QUERY_STRING'];
     $cache = new CachedPage(
         $GLOBALS['config']['PAGECACHE'],
         page_url($_SERVER),
@@ -823,12 +823,15 @@ function renderPage()
         if ($GLOBALS['config']['OPEN_SHAARLI']) { header('Location: ?'); exit; }  // No need to login for open Shaarli
         $token=''; if (ban_canLogin()) $token=getToken(); // Do not waste token generation if not useful.
         $PAGE->assign('token',$token);
+        if (isset($_GET['username'])) {
+            $PAGE->assign('username', escape($_GET['username']));
+        }
         $PAGE->assign('returnurl',(isset($_SERVER['HTTP_REFERER']) ? escape($_SERVER['HTTP_REFERER']):''));
         $PAGE->renderPage('loginform');
         exit;
     }
     // -------- User wants to logout.
-    if (isset($_SERVER["QUERY_STRING"]) && startswith($_SERVER["QUERY_STRING"],'do=logout'))
+    if (isset($_SERVER['QUERY_STRING']) && startsWith($_SERVER['QUERY_STRING'], 'do=logout'))
     {
         invalidateCaches($GLOBALS['config']['PAGECACHE']);
         logout();
@@ -1077,12 +1080,6 @@ function renderPage()
             exit;
         }
 
-               // Same case as above except that user tried to access ?do=addlink without being logged in
-               // Note: passing empty parameters makes Shaarli generate default URLs and descriptions.
-               if (isset($_GET['do']) && $_GET['do'] === 'addlink') {
-                       header('Location: ?do=login&post=');
-                       exit;
-               }
         showLinkList($PAGE, $LINKSDB);
         if (isset($_GET['edit_link'])) {
             header('Location: ?do=login&edit_link='. escape($_GET['edit_link']));
@@ -1506,7 +1503,7 @@ function renderPage()
     }
 
     // -------- User is uploading a file for import
-    if (isset($_SERVER["QUERY_STRING"]) && startswith($_SERVER["QUERY_STRING"],'do=upload'))
+    if (isset($_SERVER['QUERY_STRING']) && startsWith($_SERVER['QUERY_STRING'], 'do=upload'))
     {
         // If file is too big, some form field may be missing.
         if (!isset($_POST['token']) || (!isset($_FILES)) || (isset($_FILES['filetoupload']['size']) && $_FILES['filetoupload']['size']==0))
@@ -1608,7 +1605,7 @@ function importFile($LINKSDB)
         {
             $link = array('linkdate'=>'','title'=>'','url'=>'','description'=>'','tags'=>'','private'=>0);
             $d = explode('<DD>',$html);
-            if (startswith($d[0],'<A '))
+            if (startsWith($d[0], '<A '))
             {
                 $link['description'] = (isset($d[1]) ? html_entity_decode(trim($d[1]),ENT_QUOTES,'UTF-8') : '');  // Get description (optional)
                 preg_match('!<A .*?>(.*?)</A>!i',$d[0],$matches); $link['title'] = (isset($matches[1]) ? trim($matches[1]) : '');  // Get title
@@ -2078,7 +2075,7 @@ function genThumbnail()
 
         // Is this a link to an image, or to a flickr page ?
         $imageurl='';
-        if (endswith(parse_url($url,PHP_URL_PATH),'.jpg'))
+        if (endsWith(parse_url($url, PHP_URL_PATH), '.jpg'))
         {  // This is a direct link to an image. e.g. http://farm1.staticflickr.com/5/5921913_ac83ed27bd_o.jpg
             preg_match('!(http://farm\d+\.staticflickr\.com/\d+/\d+_\w+_)\w.jpg!',$url,$matches);
             if (!empty($matches[1])) $imageurl=$matches[1].'m.jpg';
@@ -2255,8 +2252,8 @@ function resizeImage($filepath)
     return true;
 }
 
-if (isset($_SERVER["QUERY_STRING"]) && startswith($_SERVER["QUERY_STRING"],'do=genthumbnail')) { genThumbnail(); exit; }  // Thumbnail generation/cache does not need the link database.
-if (isset($_SERVER["QUERY_STRING"]) && startswith($_SERVER["QUERY_STRING"],'do=dailyrss')) { showDailyRSS(); exit; }
+if (isset($_SERVER['QUERY_STRING']) && startsWith($_SERVER['QUERY_STRING'], 'do=genthumbnail')) { genThumbnail(); exit; }  // Thumbnail generation/cache does not need the link database.
+if (isset($_SERVER['QUERY_STRING']) && startsWith($_SERVER['QUERY_STRING'], 'do=dailyrss')) { showDailyRSS(); exit; }
 if (!isset($_SESSION['LINKS_PER_PAGE'])) $_SESSION['LINKS_PER_PAGE']=$GLOBALS['config']['LINKS_PER_PAGE'];
 renderPage();
 ?>
index 3c1b2aeb2bd90a414addb9dde31c3f63b88a8a69..6789ce841cbd7e5394ee73fb238d5bc7254213a4 100644 (file)
     hyphens: none;  
 }
 
+.markdown :not(pre) code {
+    background-color: #eee;
+    padding: 1px 3px;
+    border-radius: 1px;
+    box-shadow: 0 -1px 0 #e5e5e5,0 0 1px rgba(0,0,0,0.12),0 1px 1px rgba(0,0,0,0.24);
+}
+
 .md_help {
     color: white;
 }
index 678375fda08f70c73270d5e904cd3aef85c0b66b..a49b42d3c0de71aa1d699c05dd05abe7d981c78d 100644 (file)
@@ -1,26 +1,36 @@
 <!DOCTYPE html>
 <html>
 <head>{include="includes"}</head>
-<body{if="ban_canLogin()"} onload="document.loginform.login.focus();"{/if}>
+<body
+{if="ban_canLogin()"}
+  {if="empty($username)"}
+    onload="document.loginform.login.focus();"
+  {else}
+    onload="document.loginform.password.focus();"
+  {/if}
+{/if}>
 <div id="pageheader">
-       {include="page.header"}
+  {include="page.header"}
 
-       <div id="headerform">
-{if="!ban_canLogin()"}
-    You have been banned from login after too many failed attempts. Try later.
-{else}
-    <form method="post" name="loginform">
-    <label for="login">Login: <input type="text" id="login" name="login" tabindex="1"></label>
-    <label for="password">Password: <input type="password" id="password" name="password" tabindex="2"></label>
-    <input type="submit" value="Login" class="bigbutton" tabindex="4">
-    <label for="longlastingsession">
-    <input type="checkbox" name="longlastingsession" id="longlastingsession" tabindex="3">
-    Stay signed in (Do not check on public computers)</label>
-    <input type="hidden" name="token" value="{$token}">
-    {if="$returnurl"}<input type="hidden" name="returnurl" value="{$returnurl}">{/if}
-    </form>
-{/if}
-    </div>
+  <div id="headerform">
+    {if="!ban_canLogin()"}
+      You have been banned from login after too many failed attempts. Try later.
+    {else}
+      <form method="post" name="loginform">
+        <label for="login">Login: <input type="text" id="login" name="login" tabindex="1"
+           {if="!empty($username)"}value="{$username}"{/if}>
+        </label>
+        <label for="password">Password: <input type="password" id="password" name="password" tabindex="2">
+        </label>
+        <input type="submit" value="Login" class="bigbutton" tabindex="4">
+        <label for="longlastingsession">
+          <input type="checkbox" name="longlastingsession" id="longlastingsession" tabindex="3">
+          Stay signed in (Do not check on public computers)</label>
+        <input type="hidden" name="token" value="{$token}">
+        {if="$returnurl"}<input type="hidden" name="returnurl" value="{$returnurl}">{/if}
+      </form>
+    {/if}
+  </div>
 </div>
 
 {include="page.footer"}