Merge branch 'dev' into perms
This commit is contained in:
commit
a01baab4f0
@ -38,7 +38,7 @@ class Expire {
|
|||||||
|
|
||||||
logger('site_expire: ' . $site_expire);
|
logger('site_expire: ' . $site_expire);
|
||||||
|
|
||||||
$r = q("SELECT channel_id, channel_address, channel_pageflags, channel_expire_days from channel where true");
|
$r = q("SELECT channel_id, channel_system, channel_address, channel_expire_days from channel where true");
|
||||||
|
|
||||||
if ($r) {
|
if ($r) {
|
||||||
foreach ($r as $rr) {
|
foreach ($r as $rr) {
|
||||||
|
@ -23,7 +23,6 @@ require_once('vendor/autoload.php');
|
|||||||
class Cloud extends \Zotlabs\Web\Controller {
|
class Cloud extends \Zotlabs\Web\Controller {
|
||||||
|
|
||||||
function init() {
|
function init() {
|
||||||
require_once('include/reddav.php');
|
|
||||||
|
|
||||||
if (! is_dir('store'))
|
if (! is_dir('store'))
|
||||||
os_mkdir('store', STORAGE_DEFAULT_PERMISSIONS, false);
|
os_mkdir('store', STORAGE_DEFAULT_PERMISSIONS, false);
|
||||||
@ -79,17 +78,6 @@ class Cloud extends \Zotlabs\Web\Controller {
|
|||||||
|
|
||||||
$is_readable = false;
|
$is_readable = false;
|
||||||
|
|
||||||
if($_SERVER['REQUEST_METHOD'] === 'GET') {
|
|
||||||
try {
|
|
||||||
$x = RedFileData('/' . \App::$cmd, $auth);
|
|
||||||
}
|
|
||||||
catch(\Exception $e) {
|
|
||||||
if($e instanceof Sabre\DAV\Exception\Forbidden) {
|
|
||||||
http_status_exit(401, 'Permission denied.');
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// provide a directory view for the cloud in Hubzilla
|
// provide a directory view for the cloud in Hubzilla
|
||||||
$browser = new \Zotlabs\Storage\Browser($auth);
|
$browser = new \Zotlabs\Storage\Browser($auth);
|
||||||
$auth->setBrowserPlugin($browser);
|
$auth->setBrowserPlugin($browser);
|
||||||
|
@ -44,8 +44,6 @@ class Dav extends \Zotlabs\Web\Controller {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
require_once('include/reddav.php');
|
|
||||||
|
|
||||||
if (! is_dir('store'))
|
if (! is_dir('store'))
|
||||||
os_mkdir('store', STORAGE_DEFAULT_PERMISSIONS, false);
|
os_mkdir('store', STORAGE_DEFAULT_PERMISSIONS, false);
|
||||||
|
|
||||||
|
@ -146,6 +146,7 @@ class Dreport extends \Zotlabs\Web\Controller {
|
|||||||
'$title' => sprintf( t('Delivery report for %1$s'),substr($mid,0,32)) . '...',
|
'$title' => sprintf( t('Delivery report for %1$s'),substr($mid,0,32)) . '...',
|
||||||
'$table' => $table,
|
'$table' => $table,
|
||||||
'$mid' => urlencode($mid),
|
'$mid' => urlencode($mid),
|
||||||
|
'$options' => t('Options'),
|
||||||
'$push' => t('Redeliver'),
|
'$push' => t('Redeliver'),
|
||||||
'$entries' => $entries
|
'$entries' => $entries
|
||||||
));
|
));
|
||||||
|
@ -93,7 +93,7 @@ class Item extends \Zotlabs\Web\Controller {
|
|||||||
|
|
||||||
$origin = (($api_source && array_key_exists('origin',$_REQUEST)) ? intval($_REQUEST['origin']) : 1);
|
$origin = (($api_source && array_key_exists('origin',$_REQUEST)) ? intval($_REQUEST['origin']) : 1);
|
||||||
|
|
||||||
// To represent message-ids on other networks - this will create an item_id record
|
// To represent message-ids on other networks - this will create an iconfig record
|
||||||
|
|
||||||
$namespace = (($api_source && array_key_exists('namespace',$_REQUEST)) ? strip_tags($_REQUEST['namespace']) : '');
|
$namespace = (($api_source && array_key_exists('namespace',$_REQUEST)) ? strip_tags($_REQUEST['namespace']) : '');
|
||||||
$remote_id = (($api_source && array_key_exists('remote_id',$_REQUEST)) ? strip_tags($_REQUEST['remote_id']) : '');
|
$remote_id = (($api_source && array_key_exists('remote_id',$_REQUEST)) ? strip_tags($_REQUEST['remote_id']) : '');
|
||||||
@ -535,7 +535,7 @@ class Item extends \Zotlabs\Web\Controller {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* fix naked links by passing through a callback to see if this is a red site
|
* fix naked links by passing through a callback to see if this is a hubzilla site
|
||||||
* (already known to us) which will get a zrl, otherwise link with url, add bookmark tag to both.
|
* (already known to us) which will get a zrl, otherwise link with url, add bookmark tag to both.
|
||||||
* First protect any url inside certain bbcode tags so we don't double link it.
|
* First protect any url inside certain bbcode tags so we don't double link it.
|
||||||
*/
|
*/
|
||||||
@ -834,23 +834,25 @@ class Item extends \Zotlabs\Web\Controller {
|
|||||||
if($orig_post)
|
if($orig_post)
|
||||||
$datarray['edit'] = true;
|
$datarray['edit'] = true;
|
||||||
|
|
||||||
|
// suppress duplicates, *unless* you're editing an existing post. This could get picked up
|
||||||
|
// as a duplicate if you're editing it very soon after posting it initially and you edited
|
||||||
|
// some attribute besides the content, such as title or categories.
|
||||||
|
|
||||||
if(feature_enabled($profile_uid,'suppress_duplicates') && (! $orig_post)) {
|
if(feature_enabled($profile_uid,'suppress_duplicates') && (! $orig_post)) {
|
||||||
|
|
||||||
$z = q("select created from item where uid = %d and body = '%s'",
|
$z = q("select created from item where uid = %d and created > %s - INTERVAL %s and body = '%s' limit 1",
|
||||||
intval($profile_uid),
|
intval($profile_uid),
|
||||||
|
db_utcnow(),
|
||||||
|
db_quoteinterval('2 MINUTE'),
|
||||||
dbesc($body)
|
dbesc($body)
|
||||||
);
|
);
|
||||||
|
|
||||||
if($z) {
|
if($z) {
|
||||||
foreach($z as $zz) {
|
|
||||||
if($zz['created'] > datetime_convert('UTC','UTC', 'now - 2 minutes')) {
|
|
||||||
$datarray['cancel'] = 1;
|
$datarray['cancel'] = 1;
|
||||||
notice( t('Duplicate post suppressed.') . EOL);
|
notice( t('Duplicate post suppressed.') . EOL);
|
||||||
logger('Duplicate post. Faking plugin cancel.');
|
logger('Duplicate post. Faking plugin cancel.');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
call_hooks('post_local',$datarray);
|
call_hooks('post_local',$datarray);
|
||||||
|
|
||||||
@ -903,7 +905,7 @@ class Item extends \Zotlabs\Web\Controller {
|
|||||||
if($r) {
|
if($r) {
|
||||||
xchan_query($r);
|
xchan_query($r);
|
||||||
$sync_item = fetch_post_tags($r);
|
$sync_item = fetch_post_tags($r);
|
||||||
build_sync_packet($uid,array('item' => array(encode_item($sync_item[0],true))));
|
build_sync_packet($profile_uid,array('item' => array(encode_item($sync_item[0],true))));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if(! $nopush)
|
if(! $nopush)
|
||||||
@ -998,7 +1000,7 @@ class Item extends \Zotlabs\Web\Controller {
|
|||||||
if($r) {
|
if($r) {
|
||||||
xchan_query($r);
|
xchan_query($r);
|
||||||
$sync_item = fetch_post_tags($r);
|
$sync_item = fetch_post_tags($r);
|
||||||
build_sync_packet($uid,array('item' => array(encode_item($sync_item[0],true))));
|
build_sync_packet($profile_uid,array('item' => array(encode_item($sync_item[0],true))));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1012,11 +1014,6 @@ class Item extends \Zotlabs\Web\Controller {
|
|||||||
|
|
||||||
logger('post_complete');
|
logger('post_complete');
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// figure out how to return, depending on from whence we came
|
// figure out how to return, depending on from whence we came
|
||||||
|
|
||||||
if($api_source)
|
if($api_source)
|
||||||
|
@ -493,7 +493,6 @@ class Setup extends \Zotlabs\Web\Controller {
|
|||||||
$this->check_add($ck_funcs, t('OpenSSL PHP module'), true, true);
|
$this->check_add($ck_funcs, t('OpenSSL PHP module'), true, true);
|
||||||
$this->check_add($ck_funcs, t('mysqli or postgres PHP module'), true, true);
|
$this->check_add($ck_funcs, t('mysqli or postgres PHP module'), true, true);
|
||||||
$this->check_add($ck_funcs, t('mb_string PHP module'), true, true);
|
$this->check_add($ck_funcs, t('mb_string PHP module'), true, true);
|
||||||
$this->check_add($ck_funcs, t('mcrypt PHP module'), true, true);
|
|
||||||
$this->check_add($ck_funcs, t('xml PHP module'), true, true);
|
$this->check_add($ck_funcs, t('xml PHP module'), true, true);
|
||||||
|
|
||||||
if(function_exists('apache_get_modules')){
|
if(function_exists('apache_get_modules')){
|
||||||
@ -530,10 +529,6 @@ class Setup extends \Zotlabs\Web\Controller {
|
|||||||
$ck_funcs[4]['status'] = false;
|
$ck_funcs[4]['status'] = false;
|
||||||
$ck_funcs[4]['help'] = t('Error: mb_string PHP module required but not installed.');
|
$ck_funcs[4]['help'] = t('Error: mb_string PHP module required but not installed.');
|
||||||
}
|
}
|
||||||
if(! function_exists('mcrypt_encrypt')) {
|
|
||||||
$ck_funcs[5]['status'] = false;
|
|
||||||
$ck_funcs[5]['help'] = t('Error: mcrypt PHP module required but not installed.');
|
|
||||||
}
|
|
||||||
if(! extension_loaded('xml')) {
|
if(! extension_loaded('xml')) {
|
||||||
$ck_funcs[6]['status'] = false;
|
$ck_funcs[6]['status'] = false;
|
||||||
$ck_funcs[6]['help'] = t('Error: xml PHP module required for DAV but not installed.');
|
$ck_funcs[6]['help'] = t('Error: xml PHP module required for DAV but not installed.');
|
||||||
|
@ -206,6 +206,8 @@ class Directory extends DAV\Node implements DAV\ICollection, DAV\IQuota {
|
|||||||
throw new DAV\Exception\Forbidden('Permission denied.');
|
throw new DAV\Exception\Forbidden('Permission denied.');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
require_once('include/attach.php');
|
||||||
|
|
||||||
$mimetype = z_mime_content_type($name);
|
$mimetype = z_mime_content_type($name);
|
||||||
|
|
||||||
$c = q("SELECT * FROM channel WHERE channel_id = %d AND channel_removed = 0 LIMIT 1",
|
$c = q("SELECT * FROM channel WHERE channel_id = %d AND channel_removed = 0 LIMIT 1",
|
||||||
|
@ -24,7 +24,8 @@ class SessionHandler implements \SessionHandlerInterface {
|
|||||||
return $r[0]['sess_data'];
|
return $r[0]['sess_data'];
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
q("INSERT INTO `session` (sid, expire) values ('%s', '%s')",
|
q("INSERT INTO `session` (sess_data, sid, expire) values ('%s', '%s', '%s')",
|
||||||
|
dbesc(''),
|
||||||
dbesc($id),
|
dbesc($id),
|
||||||
dbesc(time() + 300)
|
dbesc(time() + 300)
|
||||||
);
|
);
|
||||||
|
11
doc/hook/change_channel.bb
Normal file
11
doc/hook/change_channel.bb
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
[h2]change_channel[/h2]
|
||||||
|
|
||||||
|
Called when entering a logged in state in a channel context (as opposed to an account context).
|
||||||
|
The hook array provides two arguments, 'channel_id' and 'chanx'. 'chanx' is a union of the channel
|
||||||
|
and xchan records for the now active channel.
|
||||||
|
|
||||||
|
Use this to capture what would traditionally be known as 'login events'. In this platform, login is
|
||||||
|
a separate authentication activity and doesn't necessarily require "connecting to an identity", which
|
||||||
|
is what the change_channel activity represents.
|
||||||
|
|
||||||
|
|
@ -73,6 +73,9 @@ Hooks allow plugins/addons to "hook into" the code at many points and alter the
|
|||||||
[zrl=[baseurl]/help/hook/bb_translate_video]bb_translate_video[/zrl]
|
[zrl=[baseurl]/help/hook/bb_translate_video]bb_translate_video[/zrl]
|
||||||
Called when extracting embedded services from bbcode video elements (rarely used)
|
Called when extracting embedded services from bbcode video elements (rarely used)
|
||||||
|
|
||||||
|
[zrl=[baseurl]/help/hook/change_channel]change_channel[/zrl]
|
||||||
|
Called when logging in to a channel (either during login or afterward through the channel manager)
|
||||||
|
|
||||||
[zrl=[baseurl]/help/hook/channel_remove]channel_remove[/zrl]
|
[zrl=[baseurl]/help/hook/channel_remove]channel_remove[/zrl]
|
||||||
Called when removing a channel
|
Called when removing a channel
|
||||||
|
|
||||||
|
@ -3286,15 +3286,17 @@ function item_expire($uid,$days) {
|
|||||||
|
|
||||||
$item_normal = item_normal();
|
$item_normal = item_normal();
|
||||||
|
|
||||||
$r = q("SELECT * FROM `item`
|
$r = q("SELECT id FROM item
|
||||||
WHERE `uid` = %d
|
WHERE uid = %d
|
||||||
AND `created` < %s - INTERVAL %s
|
AND created < %s - INTERVAL %s
|
||||||
AND `id` = `parent`
|
|
||||||
$sql_extra
|
|
||||||
AND item_retained = 0
|
AND item_retained = 0
|
||||||
$item_normal LIMIT $expire_limit ",
|
AND item_thread_top = 1
|
||||||
|
AND resource_type = ''
|
||||||
|
AND item_starred = 0
|
||||||
|
$sql_extra $item_normal LIMIT $expire_limit ",
|
||||||
intval($uid),
|
intval($uid),
|
||||||
db_utcnow(), db_quoteinterval(intval($days).' DAY')
|
db_utcnow(),
|
||||||
|
db_quoteinterval(intval($days).' DAY')
|
||||||
);
|
);
|
||||||
|
|
||||||
if(! $r)
|
if(! $r)
|
||||||
@ -3312,17 +3314,6 @@ function item_expire($uid,$days) {
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Only expire posts, not photos and photo comments
|
|
||||||
|
|
||||||
if($item['resource_type'] === 'photo') {
|
|
||||||
retain_item($item['id']);
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
if(intval($item['item_starred'])) {
|
|
||||||
retain_item($item['id']);
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
drop_item($item['id'],false);
|
drop_item($item['id'],false);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -132,6 +132,10 @@ function change_channel($change_channel) {
|
|||||||
}
|
}
|
||||||
if(! is_dir('store/' . $r[0]['channel_address']))
|
if(! is_dir('store/' . $r[0]['channel_address']))
|
||||||
@os_mkdir('store/' . $r[0]['channel_address'], STORAGE_DEFAULT_PERMISSIONS,true);
|
@os_mkdir('store/' . $r[0]['channel_address'], STORAGE_DEFAULT_PERMISSIONS,true);
|
||||||
|
|
||||||
|
$arr = [ 'channel_id' => $change_channel, 'chanx' => $ret ];
|
||||||
|
call_hooks('change_channel', $arr);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return $ret;
|
return $ret;
|
||||||
|
@ -296,7 +296,7 @@ function widget_filer($arr) {
|
|||||||
$selected = ((x($_REQUEST,'file')) ? $_REQUEST['file'] : '');
|
$selected = ((x($_REQUEST,'file')) ? $_REQUEST['file'] : '');
|
||||||
|
|
||||||
$terms = array();
|
$terms = array();
|
||||||
$r = q("select distinct(term) from term where uid = %d and ttype = %d order by term asc",
|
$r = q("select distinct term from term where uid = %d and ttype = %d order by term asc",
|
||||||
intval(local_channel()),
|
intval(local_channel()),
|
||||||
intval(TERM_FILE)
|
intval(TERM_FILE)
|
||||||
);
|
);
|
||||||
@ -1347,7 +1347,7 @@ function widget_forums($arr) {
|
|||||||
|
|
||||||
$perms_sql = item_permissions_sql(local_channel()) . item_normal();
|
$perms_sql = item_permissions_sql(local_channel()) . item_normal();
|
||||||
|
|
||||||
$r1 = q("select * from abook left join xchan on abook_xchan = xchan_hash where ( xchan_pubforum = 1 or ((abook_their_perms & %d ) != 0 and (abook_their_perms & %d ) = 0) ) and xchan_deleted = 0 and abook_channel = %d order by xchan_name $limit ",
|
$r1 = q("select abook_id, xchan_hash, xchan_name, xchan_url, xchan_photo_s from abook left join xchan on abook_xchan = xchan_hash where ( xchan_pubforum = 1 or ((abook_their_perms & %d ) != 0 and (abook_their_perms & %d ) = 0) ) and xchan_deleted = 0 and abook_channel = %d order by xchan_name $limit ",
|
||||||
intval(PERMS_W_TAGWALL),
|
intval(PERMS_W_TAGWALL),
|
||||||
intval(PERMS_W_STREAM),
|
intval(PERMS_W_STREAM),
|
||||||
intval(local_channel())
|
intval(local_channel())
|
||||||
@ -1361,12 +1361,34 @@ function widget_forums($arr) {
|
|||||||
// There also should be a way to update this via ajax.
|
// There also should be a way to update this via ajax.
|
||||||
|
|
||||||
for($x = 0; $x < count($r1); $x ++) {
|
for($x = 0; $x < count($r1); $x ++) {
|
||||||
$r = q("select sum(item_unseen) as unseen from item where owner_xchan = '%s' and uid = %d $perms_sql ",
|
$r = q("select sum(item_unseen) as unseen from item where owner_xchan = '%s' and uid = %d and item_unseen = 1 $perms_sql ",
|
||||||
dbesc($r1[$x]['xchan_hash']),
|
dbesc($r1[$x]['xchan_hash']),
|
||||||
intval(local_channel())
|
intval(local_channel())
|
||||||
);
|
);
|
||||||
if($r)
|
if($r)
|
||||||
$r1[$x]['unseen'] = $r[0]['unseen'];
|
$r1[$x]['unseen'] = $r[0]['unseen'];
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @FIXME
|
||||||
|
* This SQL makes the counts correct when you get forum posts arriving from different routes/sources
|
||||||
|
* (like personal channels). However the network query for these posts doesn't yet include this
|
||||||
|
* correction and it makes the SQL for that query pretty hairy so this is left as a future exercise.
|
||||||
|
* It may make more sense in that query to look for the mention in the body rather than another join,
|
||||||
|
* but that makes it very inefficient.
|
||||||
|
*
|
||||||
|
$r = q("select sum(item_unseen) as unseen from item left join term on oid = id where otype = %d and owner_xchan != '%s' and item.uid = %d and url = '%s' and ttype = %d $perms_sql ",
|
||||||
|
intval(TERM_OBJ_POST),
|
||||||
|
dbesc($r1[$x]['xchan_hash']),
|
||||||
|
intval(local_channel()),
|
||||||
|
dbesc($r1[$x]['xchan_url']),
|
||||||
|
intval(TERM_MENTION)
|
||||||
|
);
|
||||||
|
if($r)
|
||||||
|
$r1[$x]['unseen'] = ((array_key_exists('unseen',$r1[$x])) ? $r1[$x]['unseen'] + $r[0]['unseen'] : $r[0]['unseen']);
|
||||||
|
*
|
||||||
|
* end @FIXME
|
||||||
|
*/
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if($r1) {
|
if($r1) {
|
||||||
|
3219
util/hmessages.po
3219
util/hmessages.po
File diff suppressed because it is too large
Load Diff
3
view/css/bootstrap-red.css
vendored
3
view/css/bootstrap-red.css
vendored
@ -59,7 +59,8 @@ aside .nav-pills > li > a,
|
|||||||
padding: 6px 10px;
|
padding: 6px 10px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.wall-item-tools .dropdown-menu {
|
.wall-item-tools .dropdown-menu,
|
||||||
|
.section-title-wrapper .dropdown-menu {
|
||||||
min-width: auto;
|
min-width: auto;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -56,14 +56,16 @@ $(document).ready(function() {
|
|||||||
function makeFullScreen(full) {
|
function makeFullScreen(full) {
|
||||||
if(typeof full=='undefined' || full == true) {
|
if(typeof full=='undefined' || full == true) {
|
||||||
$('main').css({'transition': 'none'}).addClass('fullscreen');
|
$('main').css({'transition': 'none'}).addClass('fullscreen');
|
||||||
$('#fullscreen-btn, header, nav, aside, #tabs-collapse-1').css({'visibility': 'hidden'});
|
$('header, nav, aside, #tabs-collapse-1').css({'visibility': 'hidden'});
|
||||||
|
$('#fullscreen-btn').hide();
|
||||||
$('#inline-btn').show();
|
$('#inline-btn').show();
|
||||||
|
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
$('main').removeClass('fullscreen');
|
$('main').removeClass('fullscreen');
|
||||||
$('#fullscreen-btn, header, nav, aside, #tabs-collapse-1').css({'visibility': ''});
|
$('header, nav, aside, #tabs-collapse-1').css({'visibility': ''});
|
||||||
$('#inline-btn').hide();
|
$('#inline-btn').hide();
|
||||||
|
$('#fullscreen-btn').show();
|
||||||
$('main').css({'transition': ''});
|
$('main').css({'transition': ''});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,8 +1,6 @@
|
|||||||
<div class="generic-content-wrapper">
|
<div class="generic-content-wrapper">
|
||||||
<div class="section-title-wrapper">
|
<div class="section-title-wrapper">
|
||||||
<div class="pull-right">
|
<div class="pull-right">
|
||||||
<button id="fullscreen-btn" type="button" class="btn btn-default btn-xs" onclick="makeFullScreen(); adjustFullscreenTopBarHeight();"><i class="fa fa-expand"></i></button>
|
|
||||||
<button id="inline-btn" type="button" class="btn btn-default btn-xs" onclick="makeFullScreen(false); adjustInlineTopBarHeight();"><i class="fa fa-compress"></i></button>
|
|
||||||
{{if $is_owner}}
|
{{if $is_owner}}
|
||||||
<form id="chat-destroy" method="post" action="chat">
|
<form id="chat-destroy" method="post" action="chat">
|
||||||
<input type="hidden" name="room_name" value="{{$room_name}}" />
|
<input type="hidden" name="room_name" value="{{$room_name}}" />
|
||||||
@ -10,6 +8,8 @@
|
|||||||
<button class="btn btn-danger btn-xs" type="submit" name="submit" value="{{$drop}}" onclick="return confirmDelete();"><i class="fa fa-trash-o"></i> {{$drop}}</button>
|
<button class="btn btn-danger btn-xs" type="submit" name="submit" value="{{$drop}}" onclick="return confirmDelete();"><i class="fa fa-trash-o"></i> {{$drop}}</button>
|
||||||
</form>
|
</form>
|
||||||
{{/if}}
|
{{/if}}
|
||||||
|
<button id="fullscreen-btn" type="button" class="btn btn-default btn-xs" onclick="makeFullScreen(); adjustFullscreenTopBarHeight();"><i class="fa fa-expand"></i></button>
|
||||||
|
<button id="inline-btn" type="button" class="btn btn-default btn-xs" onclick="makeFullScreen(false); adjustInlineTopBarHeight();"><i class="fa fa-compress"></i></button>
|
||||||
</div>
|
</div>
|
||||||
<h2>{{$room_name}}</h2>
|
<h2>{{$room_name}}</h2>
|
||||||
<div class="clear"></div>
|
<div class="clear"></div>
|
||||||
|
@ -1,7 +1,14 @@
|
|||||||
<div class="generic-content-wrapper">
|
<div class="generic-content-wrapper">
|
||||||
<div class="section-title-wrapper">
|
<div class="section-title-wrapper">
|
||||||
{{if $table == 'item'}}
|
{{if $table == 'item'}}
|
||||||
<a href="dreport/push/{{$mid}}"><button class="btn btn-default btn-xs pull-right">{{$push}}</button></a>
|
<div class="dropdown pull-right">
|
||||||
|
<button type="button" class="btn btn-default btn-xs dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false" title="{{$options}}">
|
||||||
|
<i class="fa fa-sort-desc"></i>
|
||||||
|
</button>
|
||||||
|
<ul class="dropdown-menu">
|
||||||
|
<li><a href="dreport/push/{{$mid}}">{{$push}}</a></li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
{{/if}}
|
{{/if}}
|
||||||
<h2>{{$title}}</h2>
|
<h2>{{$title}}</h2>
|
||||||
</div>
|
</div>
|
||||||
|
@ -2,8 +2,6 @@
|
|||||||
<div class="section-title-wrapper">
|
<div class="section-title-wrapper">
|
||||||
<div class="pull-right">
|
<div class="pull-right">
|
||||||
<div class="dropdown">
|
<div class="dropdown">
|
||||||
<button id="fullscreen-btn" type="button" class="btn btn-default btn-xs" onclick="makeFullScreen();"><i class="fa fa-expand"></i></button>
|
|
||||||
<button id="inline-btn" type="button" class="btn btn-default btn-xs" onclick="makeFullScreen(false);"><i class="fa fa-compress"></i></button>
|
|
||||||
<button type="button" class="btn btn-default btn-xs dropdown-toggle" data-toggle="dropdown"><i class="fa fa-caret-down"></i> {{$view_label}}</button>
|
<button type="button" class="btn btn-default btn-xs dropdown-toggle" data-toggle="dropdown"><i class="fa fa-caret-down"></i> {{$view_label}}</button>
|
||||||
<ul class="dropdown-menu">
|
<ul class="dropdown-menu">
|
||||||
<li><a href="#" onclick="changeView('changeView', 'month'); return false;">{{$month}}</a></li>
|
<li><a href="#" onclick="changeView('changeView', 'month'); return false;">{{$month}}</a></li>
|
||||||
@ -16,6 +14,8 @@
|
|||||||
<button id="events-spinner" class="btn btn-default btn-xs" onclick="changeView('today', false);" title="{{$today}}"><i class="fa fa-bullseye"></i></button>
|
<button id="events-spinner" class="btn btn-default btn-xs" onclick="changeView('today', false);" title="{{$today}}"><i class="fa fa-bullseye"></i></button>
|
||||||
<button class="btn btn-default btn-xs" onclick="changeView('next', false);" title="{{$next}}"><i class="fa fa-forward"></i></button>
|
<button class="btn btn-default btn-xs" onclick="changeView('next', false);" title="{{$next}}"><i class="fa fa-forward"></i></button>
|
||||||
</div>
|
</div>
|
||||||
|
<button id="fullscreen-btn" type="button" class="btn btn-default btn-xs" onclick="makeFullScreen();"><i class="fa fa-expand"></i></button>
|
||||||
|
<button id="inline-btn" type="button" class="btn btn-default btn-xs" onclick="makeFullScreen(false);"><i class="fa fa-compress"></i></button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<h2 id="title"></h2>
|
<h2 id="title"></h2>
|
||||||
|
@ -2,13 +2,13 @@
|
|||||||
<div class="generic-content-wrapper">
|
<div class="generic-content-wrapper">
|
||||||
<div class="section-title-wrapper">
|
<div class="section-title-wrapper">
|
||||||
<div class="pull-right">
|
<div class="pull-right">
|
||||||
<button id="fullscreen-btn" type="button" class="btn btn-default btn-xs" onclick="makeFullScreen();"><i class="fa fa-expand"></i></button>
|
|
||||||
<button id="inline-btn" type="button" class="btn btn-default btn-xs" onclick="makeFullScreen(false);"><i class="fa fa-compress"></i></button>
|
|
||||||
<div class="btn-group">
|
<div class="btn-group">
|
||||||
<button class="btn btn-default btn-xs" onclick="changeView('prev', false);" title="{{$prev}}"><i class="fa fa-backward"></i></button>
|
<button class="btn btn-default btn-xs" onclick="changeView('prev', false);" title="{{$prev}}"><i class="fa fa-backward"></i></button>
|
||||||
<button id="events-spinner" class="btn btn-default btn-xs" onclick="changeView('today', false);" title="{{$today}}"><i class="fa fa-bullseye"></i></button>
|
<button id="events-spinner" class="btn btn-default btn-xs" onclick="changeView('today', false);" title="{{$today}}"><i class="fa fa-bullseye"></i></button>
|
||||||
<button class="btn btn-default btn-xs" onclick="changeView('next', false);" title="{{$next}}"><i class="fa fa-forward"></i></button>
|
<button class="btn btn-default btn-xs" onclick="changeView('next', false);" title="{{$next}}"><i class="fa fa-forward"></i></button>
|
||||||
</div>
|
</div>
|
||||||
|
<button id="fullscreen-btn" type="button" class="btn btn-default btn-xs" onclick="makeFullScreen();"><i class="fa fa-expand"></i></button>
|
||||||
|
<button id="inline-btn" type="button" class="btn btn-default btn-xs" onclick="makeFullScreen(false);"><i class="fa fa-compress"></i></button>
|
||||||
</div>
|
</div>
|
||||||
<h2 id="title"></h2>
|
<h2 id="title"></h2>
|
||||||
<div class="clear"></div>
|
<div class="clear"></div>
|
||||||
|
@ -1,8 +1,6 @@
|
|||||||
<div class="generic-content-wrapper">
|
<div class="generic-content-wrapper">
|
||||||
<div class="section-title-wrapper">
|
<div class="section-title-wrapper">
|
||||||
<div class="pull-right">
|
<div class="pull-right">
|
||||||
<button id="fullscreen-btn" type="button" class="btn btn-default btn-xs" onclick="makeFullScreen();"><i class="fa fa-expand"></i></button>
|
|
||||||
<button id="inline-btn" type="button" class="btn btn-default btn-xs" onclick="makeFullScreen(false);"><i class="fa fa-compress"></i></button>
|
|
||||||
{{if $order}}
|
{{if $order}}
|
||||||
<a class="btn btn-default btn-xs" href="{{$order.1}}" title="{{$order.0}}"><i class="fa fa-sort"></i></a>
|
<a class="btn btn-default btn-xs" href="{{$order.1}}" title="{{$order.0}}"><i class="fa fa-sort"></i></a>
|
||||||
{{/if}}
|
{{/if}}
|
||||||
@ -14,6 +12,8 @@
|
|||||||
<button class="btn btn-xs btn-success btn-xs" title="{{$usage}}" onclick="openClose('photo-upload-form'); closeMenu('photo-album-edit-wrapper');"><i class="fa fa-arrow-circle-o-up"></i> {{$upload.0}}</button>
|
<button class="btn btn-xs btn-success btn-xs" title="{{$usage}}" onclick="openClose('photo-upload-form'); closeMenu('photo-album-edit-wrapper');"><i class="fa fa-arrow-circle-o-up"></i> {{$upload.0}}</button>
|
||||||
{{/if}}
|
{{/if}}
|
||||||
</div>
|
</div>
|
||||||
|
<button id="fullscreen-btn" type="button" class="btn btn-default btn-xs" onclick="makeFullScreen();"><i class="fa fa-expand"></i></button>
|
||||||
|
<button id="inline-btn" type="button" class="btn btn-default btn-xs" onclick="makeFullScreen(false);"><i class="fa fa-compress"></i></button>
|
||||||
</div>
|
</div>
|
||||||
<h2>{{$album}}</h2>
|
<h2>{{$album}}</h2>
|
||||||
<div class="clear"></div>
|
<div class="clear"></div>
|
||||||
|
@ -1,11 +1,11 @@
|
|||||||
<div class="generic-content-wrapper">
|
<div class="generic-content-wrapper">
|
||||||
<div class="section-title-wrapper">
|
<div class="section-title-wrapper">
|
||||||
<div class="pull-right">
|
<div class="pull-right">
|
||||||
<button id="fullscreen-btn" type="button" class="btn btn-default btn-xs" onclick="makeFullScreen();"><i class="fa fa-expand"></i></button>
|
|
||||||
<button id="inline-btn" type="button" class="btn btn-default btn-xs" onclick="makeFullScreen(false);"><i class="fa fa-compress"></i></button>
|
|
||||||
{{if $can_post}}
|
{{if $can_post}}
|
||||||
<button class="btn btn-xs btn-success" title="{{$usage}}" onclick="openClose('photo-upload-form');"><i class="fa fa-arrow-circle-o-up"></i> {{$upload.0}}</button>
|
<button class="btn btn-xs btn-success" title="{{$usage}}" onclick="openClose('photo-upload-form');"><i class="fa fa-arrow-circle-o-up"></i> {{$upload.0}}</button>
|
||||||
{{/if}}
|
{{/if}}
|
||||||
|
<button id="fullscreen-btn" type="button" class="btn btn-default btn-xs" onclick="makeFullScreen();"><i class="fa fa-expand"></i></button>
|
||||||
|
<button id="inline-btn" type="button" class="btn btn-default btn-xs" onclick="makeFullScreen(false);"><i class="fa fa-compress"></i></button>
|
||||||
</div>
|
</div>
|
||||||
<h2>{{$title}}</h2>
|
<h2>{{$title}}</h2>
|
||||||
<div class="clear"></div>
|
<div class="clear"></div>
|
||||||
|
Reference in New Issue
Block a user