aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorredmatrix <git@macgirvin.com>2016-04-13 16:31:06 -0700
committerredmatrix <git@macgirvin.com>2016-04-13 16:31:06 -0700
commit9a0b61e4afed94727679eee966afb76e1add2beb (patch)
tree76f5b8d6e29fe8ffe543c75064a5e8e2e384f10c
parenta8a0ca82913a923ce2a08e1cb41305b66cf35e24 (diff)
downloadvolse-hubzilla-9a0b61e4afed94727679eee966afb76e1add2beb.tar.gz
volse-hubzilla-9a0b61e4afed94727679eee966afb76e1add2beb.tar.bz2
volse-hubzilla-9a0b61e4afed94727679eee966afb76e1add2beb.zip
refactor the js detection into a checkjs class which is only enabled on demand (currently only the channel and display pages). Will probably require a bit more work to hide/disable the cover photo when js is disabled. Have not actually tested without js to discover any other potential page issues. Have only confirmed that the detection class works and redirects to set a jsdisabled cookie and reload the page with that cookie+variable set if called from the channel page.
-rw-r--r--Zotlabs/Web/CheckJS.php36
-rw-r--r--mod/channel.php7
-rw-r--r--mod/display.php10
-rw-r--r--mod/nojs.php3
-rwxr-xr-xview/tpl/head.tpl13
5 files changed, 50 insertions, 19 deletions
diff --git a/Zotlabs/Web/CheckJS.php b/Zotlabs/Web/CheckJS.php
new file mode 100644
index 000000000..3ad5fc1ed
--- /dev/null
+++ b/Zotlabs/Web/CheckJS.php
@@ -0,0 +1,36 @@
+<?php
+
+namespace Zotlabs\Web;
+
+
+class CheckJS {
+
+ private static $jsdisabled = 0;
+
+ function __construct($test = 0) {
+ if(intval($_REQUEST['jsdisabled']))
+ $this->jsdisabled = 1;
+ if(intval($_COOKIE['jsdisabled']))
+ $this->jsdisabled = 1;
+
+ if(! $this->jsdisabled) {
+ $page = urlencode(\App::$query_string);
+
+ if($test) {
+ \App::$page['htmlhead'] .= "\r\n" . '<meta http-equiv="refresh" content="0; url=' . z_root() . '/nojs?f=&redir=' . $page . '">' . "\r\n";
+ }
+ else {
+ \App::$page['htmlhead'] .= "\r\n" . '<noscript><meta http-equiv="refresh" content="0; url=' . z_root() . '/nojs?f=&redir=' . $page . '"></noscript>' . "\r\n";
+ }
+ }
+
+ }
+
+ function disabled() {
+ return self::$jsdisabled;
+ }
+
+
+}
+
+
diff --git a/mod/channel.php b/mod/channel.php
index 9119f91a6..9bc7332dc 100644
--- a/mod/channel.php
+++ b/mod/channel.php
@@ -54,6 +54,7 @@ function channel_content(&$a, $update = 0, $load = false) {
if($load)
$_SESSION['loadtime'] = datetime_convert();
+ $checkjs = new Zotlabs\Web\CheckJS();
$category = $datequery = $datequery2 = '';
@@ -209,7 +210,7 @@ function channel_content(&$a, $update = 0, $load = false) {
App::set_pager_itemspage(((intval($itemspage)) ? $itemspage : 20));
$pager_sql = sprintf(" LIMIT %d OFFSET %d ", intval(App::$pager['itemspage']), intval(App::$pager['start']));
- if($load || ($_COOKIE['jsdisabled'] == 1)) {
+ if($load || ($checkjs->disabled())) {
if ($mid) {
$r = q("SELECT parent AS item_id from item where mid = '%s' and uid = %d $item_normal
AND item_wall = 1 $sql_extra limit 1",
@@ -338,13 +339,13 @@ function channel_content(&$a, $update = 0, $load = false) {
}
- if($_COOKIE['jsdisabled'] == 1) {
+ if($checkjs->disabled()) {
$o .= conversation($a,$items,'channel',$update,'traditional');
} else {
$o .= conversation($a,$items,'channel',$update,$page_mode);
}
- if((! $update) || ($_COOKIE['jsdisabled'] == 1)) {
+ if((! $update) || ($checkjs->disabled())) {
$o .= alt_pager($a,count($items));
if ($mid && $items[0]['title'])
App::$page['title'] = $items[0]['title'] . " - " . App::$page['title'];
diff --git a/mod/display.php b/mod/display.php
index 9c50eb9c0..2844a1205 100644
--- a/mod/display.php
+++ b/mod/display.php
@@ -5,6 +5,10 @@ function display_content(&$a, $update = 0, $load = false) {
// logger("mod-display: update = $update load = $load");
+
+ $checkjs = new Zotlabs\Web\CheckJS();
+
+
if($load)
$_SESSION['loadtime'] = datetime_convert();
@@ -168,13 +172,13 @@ function display_content(&$a, $update = 0, $load = false) {
$sql_extra = public_permissions_sql($observer_hash);
- if(($update && $load) || ($_COOKIE['jsdisabled'] == 1)) {
+ if(($update && $load) || ($checkjs->disabled())) {
$updateable = false;
$pager_sql = sprintf(" LIMIT %d OFFSET %d ", intval(App::$pager['itemspage']),intval(App::$pager['start']));
- if($load || ($_COOKIE['jsdisabled'] == 1)) {
+ if($load || ($checkjs->disabled())) {
$r = null;
require_once('include/identity.php');
@@ -290,7 +294,7 @@ function display_content(&$a, $update = 0, $load = false) {
}
- if ($_COOKIE['jsdisabled'] == 1) {
+ if ($checkjs->disabled()) {
$o .= conversation($a, $items, 'display', $update, 'traditional');
if ($items[0]['title'])
App::$page['title'] = $items[0]['title'] . " - " . App::$page['title'];
diff --git a/mod/nojs.php b/mod/nojs.php
index 3d894d13e..c6e04a72b 100644
--- a/mod/nojs.php
+++ b/mod/nojs.php
@@ -4,6 +4,7 @@ function nojs_init(&$a) {
setcookie('jsdisabled', 1, 0);
$p = $_GET['query'];
- goaway(z_root() . (($p) ? '/' . $p : ''));
+ $hasq = strpos($p,'?');
+ goaway(z_root() . (($p) ? '/' . $p : '') . (($hasq) ? '' : '?f=' ) . '&jsdisabled=1');
} \ No newline at end of file
diff --git a/view/tpl/head.tpl b/view/tpl/head.tpl
index 7984723b3..9fcdf1735 100755
--- a/view/tpl/head.tpl
+++ b/view/tpl/head.tpl
@@ -1,27 +1,17 @@
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
<base href="{{$baseurl}}/" />
<meta name="viewport" content="width=device-width, height=device-height, initial-scale=1, user-scalable={{$user_scalable}}" />
-<noscript><meta http-equiv="refresh" content="0; url=nojs.php&redir={{$query}}"></noscript>
{{$metas}}
<!--[if IE]>
<script src="{{$baseurl}}/library/html5.js"></script>
<![endif]-->
{{$head_css}}
-
{{$js_strings}}
-
{{$head_js}}
-
<link rel="shortcut icon" href="{{$icon}}" />
-<link rel="search"
- href="{{$baseurl}}/opensearch"
- type="application/opensearchdescription+xml"
- title="{{$osearch}}" />
-
-
+<link rel="search" href="{{$baseurl}}/opensearch" type="application/opensearchdescription+xml" title="{{$osearch}}" />
<script>
-
var updateInterval = {{$update_interval}};
var localUser = {{if $local_channel}}{{$local_channel}}{{else}}false{{/if}};
var zid = {{if $zid}}'{{$zid}}'{{else}}null{{/if}};
@@ -29,7 +19,6 @@
{{if $channel_hash}}var channelHash = '{{$channel_hash}}';{{/if}}
{{if $channel_id}}var channelId = '{{$channel_id}}';{{/if}}{{* Used in e.g. autocomplete *}}
var preloadImages = {{$preload_images}};
-
</script>