diff options
author | Marsup <marsup@gmail.com> | 2015-05-11 16:42:54 +0000 |
---|---|---|
committer | Marsup <marsup@gmail.com> | 2015-05-15 16:18:54 +0000 |
commit | d33c5d4c3b9c70441391a08e8bcb2a8c639a4635 (patch) | |
tree | b98ac14b6902591893d7daf2357095cc3301f530 | |
parent | 569ffb59d4f7c41e5deabd8b2a163a952acb1957 (diff) | |
download | Shaarli-d33c5d4c3b9c70441391a08e8bcb2a8c639a4635.tar.gz Shaarli-d33c5d4c3b9c70441391a08e8bcb2a8c639a4635.tar.zst Shaarli-d33c5d4c3b9c70441391a08e8bcb2a8c639a4635.zip |
Add Firefox Social API to the tools. Fixes #101.
-rw-r--r-- | index.php | 15 | ||||
-rw-r--r-- | tpl/editlink.html | 4 | ||||
-rw-r--r-- | tpl/tools.html | 27 |
3 files changed, 39 insertions, 7 deletions
@@ -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 | } |
@@ -1555,7 +1555,7 @@ function renderPage() | |||
1555 | pubsubhub(); | 1555 | pubsubhub(); |
1556 | 1556 | ||
1557 | // If we are called from the bookmarklet, we must close the popup: | 1557 | // If we are called from the bookmarklet, we must close the popup: |
1558 | if (isset($_GET['source']) && $_GET['source']=='bookmarklet') { echo '<script>self.close();</script>'; exit; } | 1558 | if (isset($_GET['source']) && ($_GET['source']=='bookmarklet' || $_GET['source']=='firefoxsocialapi')) { echo '<script>self.close();</script>'; exit; } |
1559 | $returnurl = ( isset($_POST['returnurl']) ? $_POST['returnurl'] : '?' ); | 1559 | $returnurl = ( isset($_POST['returnurl']) ? $_POST['returnurl'] : '?' ); |
1560 | $returnurl .= '#'.smallHash($linkdate); // Scroll to the link which has been edited. | 1560 | $returnurl .= '#'.smallHash($linkdate); // Scroll to the link which has been edited. |
1561 | if (strstr($returnurl, "do=addlink")) { $returnurl = '?'; } //if we come from ?do=addlink, set returnurl to homepage instead | 1561 | if (strstr($returnurl, "do=addlink")) { $returnurl = '?'; } //if we come from ?do=addlink, set returnurl to homepage instead |
@@ -1567,7 +1567,7 @@ function renderPage() | |||
1567 | if (isset($_POST['cancel_edit'])) | 1567 | if (isset($_POST['cancel_edit'])) |
1568 | { | 1568 | { |
1569 | // If we are called from the bookmarklet, we must close the popup: | 1569 | // If we are called from the bookmarklet, we must close the popup: |
1570 | if (isset($_GET['source']) && $_GET['source']=='bookmarklet') { echo '<script>self.close();</script>'; exit; } | 1570 | if (isset($_GET['source']) && ($_GET['source']=='bookmarklet' || $_GET['source']=='firefoxsocialapi')) { echo '<script>self.close();</script>'; exit; } |
1571 | $returnurl = ( isset($_POST['returnurl']) ? $_POST['returnurl'] : '?' ); | 1571 | $returnurl = ( isset($_POST['returnurl']) ? $_POST['returnurl'] : '?' ); |
1572 | $returnurl .= '#'.smallHash($_POST['lf_linkdate']); // Scroll to the link which has been edited. | 1572 | $returnurl .= '#'.smallHash($_POST['lf_linkdate']); // Scroll to the link which has been edited. |
1573 | header('Location: '.$returnurl); // After canceling, redirect to the page the user was on. | 1573 | header('Location: '.$returnurl); // After canceling, redirect to the page the user was on. |
@@ -1586,7 +1586,7 @@ function renderPage() | |||
1586 | $LINKSDB->savedb(); // save to disk | 1586 | $LINKSDB->savedb(); // save to disk |
1587 | 1587 | ||
1588 | // If we are called from the bookmarklet, we must close the popup: | 1588 | // If we are called from the bookmarklet, we must close the popup: |
1589 | if (isset($_GET['source']) && $_GET['source']=='bookmarklet') { echo '<script>self.close();</script>'; exit; } | 1589 | if (isset($_GET['source']) && ($_GET['source']=='bookmarklet' || $_GET['source']=='firefoxsocialapi')) { echo '<script>self.close();</script>'; exit; } |
1590 | // Pick where we're going to redirect | 1590 | // Pick where we're going to redirect |
1591 | // ============================================================= | 1591 | // ============================================================= |
1592 | // Basically, we can't redirect to where we were previously if it was a permalink | 1592 | // Basically, we can't redirect to where we were previously if it was a permalink |
@@ -1594,7 +1594,7 @@ function renderPage() | |||
1594 | // Cases: | 1594 | // Cases: |
1595 | // - / : nothing in $_GET, redirect to self | 1595 | // - / : nothing in $_GET, redirect to self |
1596 | // - /?page : redirect to self | 1596 | // - /?page : redirect to self |
1597 | // - /?searchterm : redirect to self (there might be other links) | 1597 | // - /?searchterm : redirect to self (there might be other links) |
1598 | // - /?searchtags : redirect to self | 1598 | // - /?searchtags : redirect to self |
1599 | // - /permalink : redirect to / (the link does not exist anymore) | 1599 | // - /permalink : redirect to / (the link does not exist anymore) |
1600 | // - /?edit_link : redirect to / (the link does not exist anymore) | 1600 | // - /?edit_link : redirect to / (the link does not exist anymore) |
@@ -1704,6 +1704,7 @@ function renderPage() | |||
1704 | $PAGE->assign('link_is_new',$link_is_new); | 1704 | $PAGE->assign('link_is_new',$link_is_new); |
1705 | $PAGE->assign('token',getToken()); // XSRF protection. | 1705 | $PAGE->assign('token',getToken()); // XSRF protection. |
1706 | $PAGE->assign('http_referer',(isset($_SERVER['HTTP_REFERER']) ? $_SERVER['HTTP_REFERER'] : '')); | 1706 | $PAGE->assign('http_referer',(isset($_SERVER['HTTP_REFERER']) ? $_SERVER['HTTP_REFERER'] : '')); |
1707 | $PAGE->assign('source',(isset($_GET['source']) ? $_GET['source'] : '')); | ||
1707 | $PAGE->assign('tags', $LINKSDB->allTags()); | 1708 | $PAGE->assign('tags', $LINKSDB->allTags()); |
1708 | $PAGE->renderPage('editlink'); | 1709 | $PAGE->renderPage('editlink'); |
1709 | exit; | 1710 | exit; |
@@ -1954,7 +1955,7 @@ function buildLinkList($PAGE,$LINKSDB) | |||
1954 | strlen($link["url"]) === 7) { | 1955 | strlen($link["url"]) === 7) { |
1955 | $link["url"] = indexUrl() . $link["url"]; | 1956 | $link["url"] = indexUrl() . $link["url"]; |
1956 | } | 1957 | } |
1957 | 1958 | ||
1958 | $linkDisp[$keys[$i]] = $link; | 1959 | $linkDisp[$keys[$i]] = $link; |
1959 | $i++; | 1960 | $i++; |
1960 | } | 1961 | } |
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)+'&title='%20+%20encodeURIComponent(title)+'&description='%20+%20encodeURIComponent(document.getSelection())+'&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>⇐ Drag this link to your bookmarks toolbar (or right-click it and choose Bookmark This Link....).<br> 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)+'&title='%20+%20encodeURIComponent(title)+'&description='%20+%20encodeURIComponent(document.getSelection())+'&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>⇐ Drag this link to your bookmarks toolbar (or right-click it and choose Bookmark This Link....).<br> 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>⇐ Drag this link to your bookmarks toolbar (or right-click it and choose Bookmark This Link....).<br> 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>⇐ Drag this link to your bookmarks toolbar (or right-click it and choose Bookmark This Link....).<br> 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>⇐ 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"} |