aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--index.php24
-rw-r--r--tpl/editlink.html4
-rw-r--r--tpl/tools.html27
3 files changed, 45 insertions, 10 deletions
diff --git a/index.php b/index.php
index 3cbea363..a547fbe8 100644
--- a/index.php
+++ b/index.php
@@ -309,8 +309,8 @@ function autoLocale()
309 if (preg_match('/([a-z]{2})-?([a-z]{2})?/i',$_SERVER['HTTP_ACCEPT_LANGUAGE'],$matches)) { 309 if (preg_match('/([a-z]{2})-?([a-z]{2})?/i',$_SERVER['HTTP_ACCEPT_LANGUAGE'],$matches)) {
310 $loc = $matches[1] . (!empty($matches[2]) ? '_' . strtoupper($matches[2]) : ''); 310 $loc = $matches[1] . (!empty($matches[2]) ? '_' . strtoupper($matches[2]) : '');
311 $attempts = array($loc.'.UTF-8', $loc, str_replace('_', '-', $loc).'.UTF-8', str_replace('_', '-', $loc), 311 $attempts = array($loc.'.UTF-8', $loc, str_replace('_', '-', $loc).'.UTF-8', str_replace('_', '-', $loc),
312 $loc . '_' . strtoupper($loc).'.UTF-8', $loc . '_' . strtoupper($loc), 312 $loc . '_' . strtoupper($loc).'.UTF-8', $loc . '_' . strtoupper($loc),
313 $loc . '_' . $loc.'.UTF-8', $loc . '_' . $loc, $loc . '-' . strtoupper($loc).'.UTF-8', 313 $loc . '_' . $loc.'.UTF-8', $loc . '_' . $loc, $loc . '-' . strtoupper($loc).'.UTF-8',
314 $loc . '-' . strtoupper($loc), $loc . '-' . $loc.'.UTF-8', $loc . '-' . $loc); 314 $loc . '-' . strtoupper($loc), $loc . '-' . $loc.'.UTF-8', $loc . '-' . $loc);
315 } 315 }
316 } 316 }
@@ -555,9 +555,12 @@ function endsWith($haystack,$needle,$case=true)
555 PS: I could have used strptime(), but it does not exist on Windows. I'm too kind. */ 555 PS: I could have used strptime(), but it does not exist on Windows. I'm too kind. */
556function linkdate2timestamp($linkdate) 556function linkdate2timestamp($linkdate)
557{ 557{
558 $Y=$M=$D=$h=$m=$s=0; 558 if(strcmp($linkdate, '_000000') !== 0 || !$linkdate){
559 sscanf($linkdate,'%4d%2d%2d_%2d%2d%2d',$Y,$M,$D,$h,$m,$s); 559 $Y=$M=$D=$h=$m=$s=0;
560 return mktime($h,$m,$s,$M,$D,$Y); 560 $r = sscanf($linkdate,'%4d%2d%2d_%2d%2d%2d',$Y,$M,$D,$h,$m,$s);
561 return mktime($h,$m,$s,$M,$D,$Y);
562 }
563 return time();
561} 564}
562 565
563/* Converts a linkdate time (YYYYMMDD_HHMMSS) of an article to a RFC822 date. 566/* Converts a linkdate time (YYYYMMDD_HHMMSS) of an article to a RFC822 date.
@@ -1572,7 +1575,7 @@ function renderPage()
1572 pubsubhub(); 1575 pubsubhub();
1573 1576
1574 // If we are called from the bookmarklet, we must close the popup: 1577 // If we are called from the bookmarklet, we must close the popup:
1575 if (isset($_GET['source']) && $_GET['source']=='bookmarklet') { echo '<script>self.close();</script>'; exit; } 1578 if (isset($_GET['source']) && ($_GET['source']=='bookmarklet' || $_GET['source']=='firefoxsocialapi')) { echo '<script>self.close();</script>'; exit; }
1576 $returnurl = ( isset($_POST['returnurl']) ? $_POST['returnurl'] : '?' ); 1579 $returnurl = ( isset($_POST['returnurl']) ? $_POST['returnurl'] : '?' );
1577 $returnurl .= '#'.smallHash($linkdate); // Scroll to the link which has been edited. 1580 $returnurl .= '#'.smallHash($linkdate); // Scroll to the link which has been edited.
1578 if (strstr($returnurl, "do=addlink")) { $returnurl = '?'; } //if we come from ?do=addlink, set returnurl to homepage instead 1581 if (strstr($returnurl, "do=addlink")) { $returnurl = '?'; } //if we come from ?do=addlink, set returnurl to homepage instead
@@ -1584,7 +1587,7 @@ function renderPage()
1584 if (isset($_POST['cancel_edit'])) 1587 if (isset($_POST['cancel_edit']))
1585 { 1588 {
1586 // If we are called from the bookmarklet, we must close the popup: 1589 // If we are called from the bookmarklet, we must close the popup:
1587 if (isset($_GET['source']) && $_GET['source']=='bookmarklet') { echo '<script>self.close();</script>'; exit; } 1590 if (isset($_GET['source']) && ($_GET['source']=='bookmarklet' || $_GET['source']=='firefoxsocialapi')) { echo '<script>self.close();</script>'; exit; }
1588 $returnurl = ( isset($_POST['returnurl']) ? $_POST['returnurl'] : '?' ); 1591 $returnurl = ( isset($_POST['returnurl']) ? $_POST['returnurl'] : '?' );
1589 $returnurl .= '#'.smallHash($_POST['lf_linkdate']); // Scroll to the link which has been edited. 1592 $returnurl .= '#'.smallHash($_POST['lf_linkdate']); // Scroll to the link which has been edited.
1590 header('Location: '.$returnurl); // After canceling, redirect to the page the user was on. 1593 header('Location: '.$returnurl); // After canceling, redirect to the page the user was on.
@@ -1603,7 +1606,7 @@ function renderPage()
1603 $LINKSDB->savedb(); // save to disk 1606 $LINKSDB->savedb(); // save to disk
1604 1607
1605 // If we are called from the bookmarklet, we must close the popup: 1608 // If we are called from the bookmarklet, we must close the popup:
1606 if (isset($_GET['source']) && $_GET['source']=='bookmarklet') { echo '<script>self.close();</script>'; exit; } 1609 if (isset($_GET['source']) && ($_GET['source']=='bookmarklet' || $_GET['source']=='firefoxsocialapi')) { echo '<script>self.close();</script>'; exit; }
1607 // Pick where we're going to redirect 1610 // Pick where we're going to redirect
1608 // ============================================================= 1611 // =============================================================
1609 // Basically, we can't redirect to where we were previously if it was a permalink 1612 // Basically, we can't redirect to where we were previously if it was a permalink
@@ -1611,7 +1614,7 @@ function renderPage()
1611 // Cases: 1614 // Cases:
1612 // - / : nothing in $_GET, redirect to self 1615 // - / : nothing in $_GET, redirect to self
1613 // - /?page : redirect to self 1616 // - /?page : redirect to self
1614 // - /?searchterm : redirect to self (there might be other links) 1617 // - /?searchterm : redirect to self (there might be other links)
1615 // - /?searchtags : redirect to self 1618 // - /?searchtags : redirect to self
1616 // - /permalink : redirect to / (the link does not exist anymore) 1619 // - /permalink : redirect to / (the link does not exist anymore)
1617 // - /?edit_link : redirect to / (the link does not exist anymore) 1620 // - /?edit_link : redirect to / (the link does not exist anymore)
@@ -1721,6 +1724,7 @@ function renderPage()
1721 $PAGE->assign('link_is_new',$link_is_new); 1724 $PAGE->assign('link_is_new',$link_is_new);
1722 $PAGE->assign('token',getToken()); // XSRF protection. 1725 $PAGE->assign('token',getToken()); // XSRF protection.
1723 $PAGE->assign('http_referer',(isset($_SERVER['HTTP_REFERER']) ? $_SERVER['HTTP_REFERER'] : '')); 1726 $PAGE->assign('http_referer',(isset($_SERVER['HTTP_REFERER']) ? $_SERVER['HTTP_REFERER'] : ''));
1727 $PAGE->assign('source',(isset($_GET['source']) ? $_GET['source'] : ''));
1724 $PAGE->assign('tags', $LINKSDB->allTags()); 1728 $PAGE->assign('tags', $LINKSDB->allTags());
1725 $PAGE->renderPage('editlink'); 1729 $PAGE->renderPage('editlink');
1726 exit; 1730 exit;
@@ -1975,7 +1979,7 @@ function buildLinkList($PAGE,$LINKSDB)
1975 strlen($link["url"]) === 7) { 1979 strlen($link["url"]) === 7) {
1976 $link["url"] = indexUrl() . $link["url"]; 1980 $link["url"] = indexUrl() . $link["url"];
1977 } 1981 }
1978 1982
1979 $linkDisp[$keys[$i]] = $link; 1983 $linkDisp[$keys[$i]] = $link;
1980 $i++; 1984 $i++;
1981 } 1985 }
diff --git a/tpl/editlink.html b/tpl/editlink.html
index b737b990..0276f088 100644
--- a/tpl/editlink.html
+++ b/tpl/editlink.html
@@ -9,7 +9,9 @@
9{elseif="$link.description==''"}onload="document.linkform.lf_description.focus();" 9{elseif="$link.description==''"}onload="document.linkform.lf_description.focus();"
10{else}onload="document.linkform.lf_tags.focus();"{/if} > 10{else}onload="document.linkform.lf_tags.focus();"{/if} >
11<div id="pageheader"> 11<div id="pageheader">
12 {if="$source !== 'firefoxsocialapi'"}
12 {include="page.header"} 13 {include="page.header"}
14 {/if}
13 <div id="editlinkform"> 15 <div id="editlinkform">
14 <form method="post" name="linkform"> 16 <form method="post" name="linkform">
15 <input type="hidden" name="lf_linkdate" value="{$link.linkdate}"> 17 <input type="hidden" name="lf_linkdate" value="{$link.linkdate}">
@@ -34,7 +36,9 @@
34 </form> 36 </form>
35 </div> 37 </div>
36</div> 38</div>
39{if="$source !== 'firefoxsocialapi'"}
37{include="page.footer"} 40{include="page.footer"}
41{/if}
38{if="($GLOBALS['config']['OPEN_SHAARLI'] || isLoggedIn())"} 42{if="($GLOBALS['config']['OPEN_SHAARLI'] || isLoggedIn())"}
39<script> 43<script>
40 $ = Awesomplete.$; 44 $ = Awesomplete.$;
diff --git a/tpl/tools.html b/tpl/tools.html
index e912f615..a3b469de 100644
--- a/tpl/tools.html
+++ b/tpl/tools.html
@@ -12,7 +12,34 @@
12 <a href="?do=export"><b>Export</b> <span>: Export Netscape html bookmarks (which can be imported in Firefox, Chrome, Opera, delicious...)</span></a><br><br> 12 <a href="?do=export"><b>Export</b> <span>: Export Netscape html bookmarks (which can be imported in Firefox, Chrome, Opera, delicious...)</span></a><br><br>
13 <a class="smallbutton" onclick="alert('Drag this link to your bookmarks toolbar, or right-click it and choose Bookmark This Link...');return false;" href="javascript:javascript:(function(){var%20url%20=%20location.href;var%20title%20=%20document.title%20||%20url;window.open('{$pageabsaddr}?post='%20+%20encodeURIComponent(url)+'&amp;title='%20+%20encodeURIComponent(title)+'&amp;description='%20+%20encodeURIComponent(document.getSelection())+'&amp;source=bookmarklet','_blank','menubar=no,height=390,width=600,toolbar=no,scrollbars=no,status=no,dialog=1');})();"><b>✚Shaare link</b></a> <a href="#" style="clear:none;"><span>&#x21D0; Drag this link to your bookmarks toolbar (or right-click it and choose Bookmark This Link....).<br>&nbsp;&nbsp;&nbsp;&nbsp;Then click "✚Shaare link" button in any page you want to share.</span></a><br><br> 13 <a class="smallbutton" onclick="alert('Drag this link to your bookmarks toolbar, or right-click it and choose Bookmark This Link...');return false;" href="javascript:javascript:(function(){var%20url%20=%20location.href;var%20title%20=%20document.title%20||%20url;window.open('{$pageabsaddr}?post='%20+%20encodeURIComponent(url)+'&amp;title='%20+%20encodeURIComponent(title)+'&amp;description='%20+%20encodeURIComponent(document.getSelection())+'&amp;source=bookmarklet','_blank','menubar=no,height=390,width=600,toolbar=no,scrollbars=no,status=no,dialog=1');})();"><b>✚Shaare link</b></a> <a href="#" style="clear:none;"><span>&#x21D0; Drag this link to your bookmarks toolbar (or right-click it and choose Bookmark This Link....).<br>&nbsp;&nbsp;&nbsp;&nbsp;Then click "✚Shaare link" button in any page you want to share.</span></a><br><br>
14 <a class="smallbutton" onclick="alert('Drag this link to your bookmarks toolbar, or right-click it and choose Bookmark This Link...');return false;" href="?private=1&post="><b>✚Add Note</b></a> <a href="#" style="clear:none;"><span>&#x21D0; Drag this link to your bookmarks toolbar (or right-click it and choose Bookmark This Link....).<br>&nbsp;&nbsp;&nbsp;&nbsp;Then click "✚Add Note" button anytime to start composing a (default private) Note (text post) to your Shaarli.</span></a><br><br> 14 <a class="smallbutton" onclick="alert('Drag this link to your bookmarks toolbar, or right-click it and choose Bookmark This Link...');return false;" href="?private=1&post="><b>✚Add Note</b></a> <a href="#" style="clear:none;"><span>&#x21D0; Drag this link to your bookmarks toolbar (or right-click it and choose Bookmark This Link....).<br>&nbsp;&nbsp;&nbsp;&nbsp;Then click "✚Add Note" button anytime to start composing a (default private) Note (text post) to your Shaarli.</span></a><br><br>
15 <a class="smallbutton" onclick="activateFirefoxSocial(this)"><b>✚Add to Firefox social</b></a> <a href="#" style="clear:none;"><span>&#x21D0; Click on this button to add Shaarli to the "Share this page" button in Firefox.</span></a><br><br>
15 <div class="clear"></div> 16 <div class="clear"></div>
17
18 <script>
19 function activateFirefoxSocial(node) {
20 var loc = location.href;
21 var baseURL = loc.substring(0, loc.lastIndexOf("/"));
22
23 // Keeping the data separated (ie. not in the DOM) so that it's maintainable and diffable.
24 var data = {
25 name: "{$shaarlititle}",
26 description: "The personal, minimalist, super-fast, no-database delicious clone.",
27 author: "Shaarli",
28 version: "1.0.0",
29
30 iconURL: baseURL + "/images/favicon.ico",
31 icon32URL: baseURL + "/images/favicon.ico",
32 icon64URL: baseURL + "/images/favicon.ico",
33
34 shareURL: baseURL + "{noparse}?post=%{url}&title=%{title}&description=%{description}&source=firefoxsocialapi{/noparse}",
35 homepageURL: baseURL
36 };
37 node.setAttribute("data-service", JSON.stringify(data));
38
39 var activate = new CustomEvent("ActivateSocialFeature");
40 node.dispatchEvent(activate);
41 }
42 </script>
16 </div> 43 </div>
17</div> 44</div>
18{include="page.footer"} 45{include="page.footer"}