aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorMarsup <marsup@gmail.com>2015-05-11 16:42:54 +0000
committerMarsup <marsup@gmail.com>2015-05-15 16:18:54 +0000
commitd33c5d4c3b9c70441391a08e8bcb2a8c639a4635 (patch)
treeb98ac14b6902591893d7daf2357095cc3301f530
parent569ffb59d4f7c41e5deabd8b2a163a952acb1957 (diff)
downloadShaarli-d33c5d4c3b9c70441391a08e8bcb2a8c639a4635.tar.gz
Shaarli-d33c5d4c3b9c70441391a08e8bcb2a8c639a4635.tar.zst
Shaarli-d33c5d4c3b9c70441391a08e8bcb2a8c639a4635.zip
Add Firefox Social API to the tools. Fixes #101.
-rw-r--r--index.php15
-rw-r--r--tpl/editlink.html4
-rw-r--r--tpl/tools.html27
3 files changed, 39 insertions, 7 deletions
diff --git a/index.php b/index.php
index 07aeaa5b..fad0340c 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 }
@@ -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)+'&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"}