Merge remote-tracking branch 'upstream/master'

Conflicts:
	include/datetime.php
	include/text.php
	mod/events.php
	version.inc
	view/css/mod_events.css
	view/theme/redbasic/css/style.css
	view/tpl/event_head.tpl
	view/tpl/events-js.tpl
	view/tpl/jot.tpl
This commit is contained in:
Haakon Meland Eriksen 2015-11-28 16:26:24 +01:00
commit 17907f11a3
27 changed files with 6507 additions and 6007 deletions

View File

@ -28,3 +28,4 @@ AddType audio/ogg .oga
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?q=$1 [E=REMOTE_USER:%{HTTP:Authorization},L,QSA]
</IfModule>

View File

@ -154,6 +154,8 @@ This document assumes you're an administrator.
Needed in some Windows installations to locate the openssl configuration file on the system.
[b]system > hide_help[/b]
Don't display help documentation link in nav bar
[b]system > expire_delivery_reports[/b]
Expiration in days for delivery reports - default 30
[b]Directory config[/b]
[b]Directory search defaults[/b]

View File

@ -235,7 +235,11 @@ function datetimesel($format, $min, $max, $default, $label, $id = 'datetimepicke
$o .= replace_macros($tpl,array(
'$field' => array($id, $label, $input_text, (($required) ? t('Required') : ''), (($required) ? '*' : ''), 'placeholder="' . $readable_format . '"'),
));
<<<<<<< HEAD
$o .= "<script>\$(function () {var picker = \$('#id_$id').datetimepicker({step:5,format:'$dateformat' $minjs $maxjs $pickers $defaultdatejs,dayOfWeekStart:$first_day}); $extra_js})</script>";
=======
$o .= "<script>\$(function () {var picker = \$('#id_$id').datetimepicker({step:15,format:'$dateformat' $minjs $maxjs $pickers $defaultdatejs,dayOfWeekStart:$first_day}); $extra_js})</script>";
>>>>>>> upstream/master
return $o;
}

View File

@ -22,7 +22,7 @@ function find_upstream_directory($dirmode) {
$r = q("select * from site where site_url = '%s' limit 1",
dbesc($preferred)
);
if(($r) && ($r[0]['site_flags'] & DIRECTORY_MODE_STADALONE)) {
if(($r) && ($r[0]['site_flags'] & DIRECTORY_MODE_STANDALONE)) {
$preferred = '';
}
}

View File

@ -22,6 +22,7 @@ function js_strings() {
'$submit' => t('Submit'),
'$linkurl' => t('Please enter a link URL'),
'$leavethispage' => t('Unsaved changes. Are you sure you wish to leave this page?'),
'$location' => t('Location'),
'$t01' => ((t('timeago.prefixAgo') != 'timeago.prefixAgo') ? t('timeago.prefixAgo') : ''),
'$t02' => ((t('timeago.prefixFromNow') != 'timeago.prefixFromNow') ? t('timeago.prefixFromNow') : ''),

View File

@ -117,6 +117,8 @@ function tagadelic($uid, $count = 0, $authors = '', $owner = '', $flags = 0, $re
if(! perm_is_allowed($uid,get_observer_hash(),'view_stream'))
return array();
$item_normal = item_normal();
$sql_options = item_permissions_sql($uid);
$count = intval($count);
@ -142,7 +144,7 @@ function tagadelic($uid, $count = 0, $authors = '', $owner = '', $flags = 0, $re
$r = q("select term, count(term) as total from term left join item on term.oid = item.id
where term.uid = %d and term.type = %d
and otype = %d and item_type = %d and item_private = 0
$sql_options
$sql_options $item_normal
group by term order by total desc %s",
intval($uid),
intval($type),

View File

@ -1381,7 +1381,37 @@ function generate_named_map($location) {
return (($arr['html']) ? $arr['html'] : $location);
}
function format_event($jobject) {
$event = array();
$object = json_decode($jobject,true);
//ensure compatibility with older items - this check can be removed at a later point
if(array_key_exists('description', $object)) {
$bd_format = t('l F d, Y \@ g:i A'); // Friday January 18, 2011 @ 8:01 AM
$event['header'] = replace_macros(get_markup_template('event_item_header.tpl'),array(
'$title' => bbcode($object['title']),
'$dtstart_label' => t('Starts:'),
'$dtstart_title' => datetime_convert('UTC', 'UTC', $object['start'], (($object['adjust']) ? ATOM_TIME : 'Y-m-d\TH:i:s' )),
'$dtstart_dt' => (($object['adjust']) ? day_translate(datetime_convert('UTC', date_default_timezone_get(), $object['start'] , $bd_format )) : day_translate(datetime_convert('UTC', 'UTC', $object['start'] , $bd_format))),
'$finish' => (($object['nofinish']) ? false : true),
'$dtend_label' => t('Finishes:'),
'$dtend_title' => datetime_convert('UTC','UTC',$object['finish'], (($object['adjust']) ? ATOM_TIME : 'Y-m-d\TH:i:s' )),
'$dtend_dt' => (($object['adjust']) ? day_translate(datetime_convert('UTC', date_default_timezone_get(), $object['finish'] , $bd_format )) : day_translate(datetime_convert('UTC', 'UTC', $object['finish'] , $bd_format )))
));
$event['content'] = replace_macros(get_markup_template('event_item_content.tpl'),array(
'$description' => bbcode($object['description']),
'$location_label' => t('Location:'),
'$location' => bbcode($object['location'])
));
}
return $event;
}
function prepare_body(&$item,$attach = false) {
require_once('include/identity.php');
@ -1414,6 +1444,7 @@ function prepare_body(&$item,$attach = false) {
}
}
<<<<<<< HEAD
$event = array();
$is_event = (($item['obj_type'] === ACTIVITY_OBJ_EVENT) ? true : false);
@ -1462,6 +1493,13 @@ function prepare_body(&$item,$attach = false) {
$prep_arr = array(
'item' => $item,
'html' => $is_event ? $event['content'] : $s,
=======
$event = (($item['obj_type'] === ACTIVITY_OBJ_EVENT) ? format_event($item['object']) : false);
$prep_arr = array(
'item' => $item,
'html' => $event ? $event['content'] : $s,
>>>>>>> upstream/master
'event' => $event['header'],
'photo' => $photo
);

View File

@ -666,7 +666,7 @@ function widget_eventsmenu($arr) {
if (! local_channel())
return;
return replace_macros(get_markup_template('events_side.tpl'), array(
return replace_macros(get_markup_template('events_menu_side.tpl'), array(
'$title' => t('Events Menu'),
'$day' => t('Day View'),
'$week' => t('Week View'),
@ -677,6 +677,18 @@ function widget_eventsmenu($arr) {
));
}
function widget_eventstools($arr) {
if (! local_channel())
return;
return replace_macros(get_markup_template('events_tools_side.tpl'), array(
'$title' => t('Events Tools'),
'$export' => t('Export Calendar'),
'$import' => t('Import Calendar'),
'$submit' => t('Submit')
));
}
function widget_design_tools($arr) {
$a = get_app();
@ -1147,6 +1159,8 @@ function widget_forums($arr) {
function widget_tasklist($arr) {
if (! local_channel())
return;
require_once('include/event.php');
$o .= '<script>var tasksShowAll = 0; $(document).ready(function() { tasksFetch(); $("#tasklist-new-form").submit(function(event) { event.preventDefault(); $.post( "tasks/new", $("#tasklist-new-form").serialize(), function(data) { tasksFetch(); $("#tasklist-new-summary").val(""); } ); return false; } )});</script>';

View File

@ -3951,9 +3951,6 @@ function delivery_report_is_storable($dr) {
return false;
// is the recipient one of our connections, or do we want to store every report?
$r = explode(' ', $dr['recipient']);

View File

@ -341,3 +341,44 @@ This is obvious as soon as you notice that the cron uses proc_open to
execute php-scripts that also use proc_open, but it took me quite some time to
find that out. I hope this saves some time for other people using suhosin with
function blacklists.
#####################################################################
- Apache processes hanging, using as much CPU as they can
#####################################################################
This seems to happen sometimes if you use mpm_prefork and the PHP process
started by Apache cannot get database access.
Consider the following settings:
In /etc/apache2/mods-enabled/mpm_prefork.conf (Debian, path and file name
may vary depending on your OS and distribution), set
GracefulShutdownTimeout 300
This makes sure that Apache processes that are running wild will not do so
forever, but will be killed if they didn't stop five minutes after a
shutdown command was sent to the process.
If you expect high load on your server (public servers, e.g.), also make
sure that Apache will not spawn more processes than MySQL will accept
connections.
In the default Debian configuration, in
/etc/apache2/mods-enabled/mpm_prefork.conf the maximum number of workers
is set to 150:
MaxRequestWorkers 150
However, in /etc/mysql/my.cnf the maximum number of connection is set to
100:
max_connections = 100
150 workers are a lot and probably too much for small servers. However you
set those values, make sure that the number of Apache workers is smaller
than the number of connections MySQL accepts, leaving some room for other
stuff on your server that might access MySQL, and Hubzilla's poller which
needs MySQL access, too. A good setting for a medium-sized hub might be to
keep MySQL's max_connections at 100 and set mpm_prefork's
MaxRequestWorkers to 70.

View File

@ -90,7 +90,11 @@ function events_post(&$a) {
linkify_tags($a, $desc, local_channel());
linkify_tags($a, $location, local_channel());
<<<<<<< HEAD
$action = ($event_hash == '') ? 'new' : "event/" . $event_hash;
=======
//$action = ($event_hash == '') ? 'new' : "event/" . $event_hash;
>>>>>>> upstream/master
//fixme: this url gives a wsod if there is a linebreak detected in one of the variables ($desc or $location)
//$onerror_url = $a->get_baseurl() . "/events/" . $action . "?summary=$summary&description=$desc&location=$location&start=$start_text&finish=$finish_text&adjust=$adjust&nofinish=$nofinish&type=$type";
@ -322,6 +326,7 @@ function events_content(&$a) {
}
if($mode == 'view') {
<<<<<<< HEAD
/* edit/create form */
if($event_id) {
@ -339,6 +344,25 @@ function events_content(&$a) {
if(!x($orig_event))
$orig_event = array();
=======
/* edit/create form */
if($event_id) {
$r = q("SELECT * FROM `event` WHERE event_hash = '%s' AND `uid` = %d LIMIT 1",
dbesc($event_id),
intval(local_channel())
);
if(count($r))
$orig_event = $r[0];
}
$channel = $a->get_channel();
// Passed parameters overrides anything found in the DB
if(!x($orig_event))
$orig_event = array();
>>>>>>> upstream/master
// In case of an error the browser is redirected back here, with these parameters filled in with the previous values
/*
if(x($_REQUEST,'nofinish')) $orig_event['nofinish'] = $_REQUEST['nofinish'];
@ -376,6 +400,7 @@ function events_content(&$a) {
if(x($orig_event))
$tz = (($orig_event['adjust']) ? date_default_timezone_get() : 'UTC');
<<<<<<< HEAD
// $syear = ((x($orig_event)) ? datetime_convert('UTC', $tz, $sdt, 'Y') : '0000');
// $smonth = ((x($orig_event)) ? datetime_convert('UTC', $tz, $sdt, 'm') : '00');
// $sday = ((x($orig_event)) ? datetime_convert('UTC', $tz, $sdt, 'd') : '00');
@ -387,12 +412,18 @@ function events_content(&$a) {
// $shour = ((x($orig_event)) ? datetime_convert('UTC', $tz, $sdt, 'H') : '00');
// $sminute = ((x($orig_event)) ? datetime_convert('UTC', $tz, $sdt, 'i') : '00');
=======
$syear = datetime_convert('UTC', $tz, $sdt, 'Y');
$smonth = datetime_convert('UTC', $tz, $sdt, 'm');
$sday = datetime_convert('UTC', $tz, $sdt, 'd');
>>>>>>> upstream/master
$shour = datetime_convert('UTC', $tz, $sdt, 'H');
$sminute = datetime_convert('UTC', $tz, $sdt, 'i');
$stext = datetime_convert('UTC',$tz,$sdt);
$stext = substr($stext,0,14) . "00:00";
<<<<<<< HEAD
// $fyear = ((x($orig_event)) ? datetime_convert('UTC', $tz, $fdt, 'Y') : '0000');
// $fmonth = ((x($orig_event)) ? datetime_convert('UTC', $tz, $fdt, 'm') : '00');
// $fday = ((x($orig_event)) ? datetime_convert('UTC', $tz, $fdt, 'd') : '00');
@ -404,11 +435,20 @@ function events_content(&$a) {
// $fhour = ((x($orig_event)) ? datetime_convert('UTC', $tz, $fdt, 'H') : '00');
// $fminute = ((x($orig_event)) ? datetime_convert('UTC', $tz, $fdt, 'i') : '00');
=======
$fyear = datetime_convert('UTC', $tz, $fdt, 'Y');
$fmonth = datetime_convert('UTC', $tz, $fdt, 'm');
$fday = datetime_convert('UTC', $tz, $fdt, 'd');
>>>>>>> upstream/master
$fhour = datetime_convert('UTC', $tz, $fdt, 'H');
$fminute = datetime_convert('UTC', $tz, $fdt, 'i');
$ftext = datetime_convert('UTC',$tz,$fdt);
$ftext = substr($ftext,0,14) . "00:00";
<<<<<<< HEAD
=======
>>>>>>> upstream/master
$type = ((x($orig_event)) ? $orig_event['type'] : 'event');
$f = get_config('system','event_input_format');
@ -608,7 +648,11 @@ function events_content(&$a) {
$last_date = $d;
<<<<<<< HEAD
$edit = array($a->get_baseurl().'/events/'.$rr['event_hash'].'?expandform=1',t('Edit event'),'','');
=======
$edit = ((local_channel() && $rr['author_xchan'] == get_observer_hash()) ? array($a->get_baseurl().'/events/'.$rr['event_hash'].'?expandform=1',t('Edit event'),'','') : false);
>>>>>>> upstream/master
$drop = array($a->get_baseurl().'/events/drop/'.$rr['event_hash'],t('Delete event'),'','');

File diff suppressed because it is too large Load Diff

View File

@ -1 +1,5 @@
<<<<<<< HEAD
2015-11-25.1227
=======
2015-11-27.1229
>>>>>>> upstream/master

View File

@ -57,7 +57,8 @@ nav .navbar-toggle {
/* nav overrides end */
aside .nav-pills > li > a {
aside .nav-pills > li > a,
.response-list .nav-pills > li > a {
padding: 6px 10px;
}

View File

@ -4,7 +4,55 @@
margin-bottom: -1px;
}
<<<<<<< HEAD
=======
.fc-unthemed th,
.fc-unthemed td,
.fc-unthemed thead,
.fc-unthemed tbody,
.fc-unthemed .fc-divider,
.fc-unthemed .fc-row,
.fc-unthemed .fc-popover {
border-color: #ccc !important;
}
#events-spinner .spinner {
margin-top: 9px;
margin-bottom: -9px;
}
>>>>>>> upstream/master
.bootstrap-tagsinput {
width: 100%;
padding: 6px 12px;
}
<<<<<<< HEAD
=======
.event-wrapper {
max-width: 700px;
height: auto;
padding: 10px;
}
.event-owner {
margin-bottom: 15px;
}
.event-owner img {
margin-right: 5px;
}
.event-buttons,
.event-description {
margin-top: 10px;
}
#event-upload-form {
margin-top: 10px;
}
#event-upload-choose {
width: 100%;
}
>>>>>>> upstream/master

View File

@ -1,4 +1,5 @@
[region=aside]
[widget=eventsmenu][/widget]
[widget=eventstools][/widget]
[widget=tasklist][/widget]
[/region]

View File

@ -241,7 +241,8 @@ footer {
padding-right: 3em;
}
.birthday-today, .event-today {
.birthday-today,
.event-today {
font-weight: bold;
}
@ -847,6 +848,7 @@ nav .acpopup {
cursor: pointer;
}
<<<<<<< HEAD
.fc-unthemed th,
.fc-unthemed td,
.fc-unthemed thead,
@ -909,6 +911,8 @@ nav .acpopup {
}
=======
>>>>>>> upstream/master
#cboxOverlay {
z-index: 1050;
}
@ -1562,8 +1566,12 @@ img.mail-conv-sender-photo {
padding: 0.5em 10px;
}
.wall-photo-item {
/*padding: 0.5em 10px;*/
.wall-event-item {
padding: 10px;
color: #fff;
background-color: #3A87AD; /* should reflect calendar color */
border-top-left-radius: $radiuspx;
border-top-right-radius: $radiuspx;
}
.wall-photo-item img {
@ -2252,8 +2260,11 @@ nav .badge.mail-update:hover {
.help-searchlist a {
font-size: 130%;
}
<<<<<<< HEAD
.response-list ul {
list-style-type: none;
}
=======
>>>>>>> upstream/master

View File

@ -183,7 +183,7 @@
<h4 class="modal-title">{{$response.title}}</h4>
</div>
<div class="modal-body response-list">
<ul>{{foreach $response.list as $liker}}<li role="presentation">{{$liker}}</li>{{/foreach}}</ul>
<ul class="nav nav-pills nav-stacked">{{foreach $response.list as $liker}}<li role="presentation">{{$liker}}</li>{{/foreach}}</ul>
</div>
<div class="modal-footer clear">
<button type="button" class="btn btn-default" data-dismiss="modal">{{$item.modal_dismiss}}</button>

View File

@ -55,7 +55,14 @@
showEvent(calEvent.id);
},
loading: function(isLoading, view) {
$('#events-spinner').spin('tiny');
$('#events-spinner > i').css('color', 'transparent');
if(!isLoading) {
<<<<<<< HEAD
=======
$('#events-spinner').spin(false);
$('#events-spinner > i').css('color', '');
>>>>>>> upstream/master
$('td.fc-day').dblclick(function() {
openMenu('form');
//window.location.href='/events/new?start='+$(this).data('date');
@ -71,30 +78,54 @@
switch(view.name){
case "month":
element.find(".fc-title").html(
<<<<<<< HEAD
"<img src='{0}' style='height:10px;width:10px'>&nbsp;{1}: {2}".format(
=======
"<img src='{0}' style='height:12px;width:12px;' title='{1}'>&nbsp;<span title='{3}{4}'>{2}</span>".format(
>>>>>>> upstream/master
event.item['author']['xchan_photo_s'],
event.item['author']['xchan_name'],
event.title
event.title,
event.item.description ? event.item.description + "\r\n\r\n" : '',
event.item.location ? aStr['location'] + ': ' + event.item.location.replace(/(<([^>]+)>)/ig,"") : ''
));
break;
case "agendaWeek":
element.find(".fc-title").html(
<<<<<<< HEAD
"<img src='{0}' style='height:10px; width:10px'>&nbsp;{1}: {2}<p>{3}</p><p>{4}</p>".format(
event.item['author']['xchan_photo_s'],
event.item['author']['xchan_name'],
event.title,
event.item.description,
event.item.location
=======
"<img src='{0}' style='height:12px;width:12px;'>&nbsp;{1}: <span title='{3}{4}'>{2}</span>".format(
event.item['author']['xchan_photo_s'],
event.item['author']['xchan_name'],
event.title,
event.item.description ? event.item.description + "\r\n\r\n" : '',
event.item.location ? aStr['location'] + ': ' + event.item.location.replace(/(<([^>]+)>)/ig,"") : ''
>>>>>>> upstream/master
));
break;
case "agendaDay":
element.find(".fc-title").html(
<<<<<<< HEAD
"<img src='{0}' style='height:10px;width:10px'>&nbsp;{1}: {2}<p>{3}</p><p>{4}</p>".format(
event.item['author']['xchan_photo_s'],
event.item['author']['xchan_name'],
event.title,
event.item.description,
event.item.location
=======
"<img src='{0}' style='height:12px;width:12px;'>&nbsp;{1}: <span title='{3}{4}'>{2}</span>".format(
event.item['author']['xchan_photo_s'],
event.item['author']['xchan_name'],
event.title,
event.item.description ? event.item.description + "\r\n\r\n" : '',
event.item.location ? aStr['location'] + ': ' + event.item.location.replace(/(<([^>]+)>)/ig,"") : ''
>>>>>>> upstream/master
));
break;
}

View File

@ -0,0 +1,10 @@
{{if $description}}
<div class="event-description">
{{$description}}
</div>
{{/if}}
{{if $location}}
<div class="event-location">
<span class="event-label">{{$location_label}}</span>&nbsp;<span class="event_location">{{$location}}</span>
</div>
{{/if}}

11
view/tpl/event_item_header.tpl Executable file
View File

@ -0,0 +1,11 @@
<div class="event-title">
<h3><i class="icon-calendar"></i>&nbsp;{{$title}}</h3>
</div>
<div class="event-start">
<span class="event-label">{{$dtstart_label}}</span>&nbsp;<span class="dtstart" title="{{$dtstart_title}}">{{$dtstart_dt}}</span>
</div>
{{if $finish}}
<div class="event-start">
<span class="event-label">{{$dtend_label}}</span>&nbsp;<span class="dtend" title="{{$dtend_title}}">{{$dtend_dt}}</span>
</div>
{{/if}}

View File

@ -1,12 +1,16 @@
<div class="generic-content-wrapper">
<div class="section-title-wrapper">
<div class="pull-right">
<<<<<<< HEAD
<button class="btn btn-default btn-xs" onclick="openClose('event-tools'); closeMenu('form');"><i class="icon-cog"></i></button>
<button class="btn btn-success btn-xs" onclick="openClose('form'); closeMenu('event-tools');">{{$new_event.1}}</button>
=======
<button class="btn btn-success btn-xs" onclick="openClose('form'); closeMenu('event-tools');">{{$new_event.1}}</button>
>>>>>>> upstream/master
<div class="btn-group">
<button class="btn btn-default btn-xs" onclick="changeView('prev', false);" title="{{$prev}}"><i class="icon-backward"></i></button>
<button class="btn btn-default btn-xs" onclick="changeView('today', false);" title="{{$today}}"><i class="icon-bullseye"></i></button>
<button id="events-spinner" class="btn btn-default btn-xs" onclick="changeView('today', false);" title="{{$today}}"><i class="icon-bullseye"></i></button>
<button class="btn btn-default btn-xs" onclick="changeView('next', false);" title="{{$next}}"><i class="icon-forward"></i></button>
</div>
</div>
@ -15,6 +19,7 @@
</div>
<div id="form" class="section-content-tools-wrapper"{{if !$expandform}} style="display:none;"{{/if}}>
{{$form}}
<<<<<<< HEAD
</div>
<div id="event-tools" class="section-content-tools-wrapper" style="display:none;">
<div class="form-group">
@ -28,6 +33,8 @@
</form>
</div>
=======
>>>>>>> upstream/master
</div>
<div class="clear"></div>
<div class="section-content-wrapper-np">

15
view/tpl/events_tools_side.tpl Executable file
View File

@ -0,0 +1,15 @@
<div class="widget">
<h3>{{$title}}</h3>
<ul class="nav nav-pills nav-stacked">
<li><a href="#" onclick="exportDate(); return false;"><i class="icon-download"></i>&nbsp;{{$export}}</a></li>
<li><a href="#" onclick="openClose('event-upload-form'); return false;"><i class="icon-upload"></i>&nbsp;{{$import}}</a></li>
</ul>
<div id="event-upload-form" style="display: none;">
<form action="events" enctype="multipart/form-data" method="post" name="event-upload-form" id="event-upload-form">
<div class="form-group">
<input id="event-upload-choose" type="file" name="userfile" />
</div>
<button id="dbtn-submit" class="btn btn-primary btn-xs" type="submit" name="submit" >{{$submit}}</button>
</form>
</div>
</div>

213
view/tpl/jot.tpl Executable file
View File

@ -0,0 +1,213 @@
<div id="profile-jot-wrapper">
<form id="profile-jot-form" action="{{$action}}" method="post">
{{if $parent}}
<input type="hidden" name="parent" value="{{$parent}}" />
{{/if}}
<input type="hidden" name="obj_type" value="{{$ptyp}}" />
<input type="hidden" name="profile_uid" value="{{$profile_uid}}" />
<input type="hidden" name="return" value="{{$return_path}}" />
<input type="hidden" name="location" id="jot-location" value="{{$defloc}}" />
<input type="hidden" name="expire" id="jot-expire" value="{{$defexpire}}" />
<input type="hidden" name="created" id="jot-created" value="{{$defpublish}}" />
<input type="hidden" name="media_str" id="jot-media" value="" />
<input type="hidden" name="source" id="jot-source" value="{{$source}}" />
<input type="hidden" name="coord" id="jot-coord" value="" />
<input type="hidden" name="post_id" value="{{$post_id}}" />
<input type="hidden" name="webpage" value="{{$webpage}}" />
<input type="hidden" name="preview" id="jot-preview" value="0" />
<input type="hidden" id="jot-consensus" name="consensus" value="{{if $consensus}}{{$consensus}}{{else}}0{{/if}}" />
{{if $showacl}}{{$acl}}{{/if}}
{{$mimeselect}}
{{$layoutselect}}
{{if $id_select}}
<div class="channel-id-select-div">
<span class="channel-id-select-desc">{{$id_seltext}}</span> {{$id_select}}
</div>
{{/if}}
{{if $webpage}}
<div id="jot-pagetitle-wrap" class="jothidden">
<input name="pagetitle" id="jot-pagetitle" type="text" placeholder="{{$placeholdpagetitle}}" value="{{$pagetitle}}">
</div>
{{/if}}
<div id="jot-title-wrap" class="jothidden">
<input name="title" id="jot-title" type="text" placeholder="{{$placeholdertitle}}" tabindex=1 value="{{$title}}">
</div>
{{if $catsenabled}}
<div id="jot-category-wrap" class="jothidden">
<input name="category" id="jot-category" type="text" placeholder="{{$placeholdercategory}}" value="{{$category}}" data-role="cat-tagsinput">
</div>
{{/if}}
<div id="jot-text-wrap">
<textarea class="profile-jot-text" id="profile-jot-text" name="body" tabindex=2 placeholder="{{$share}}">{{$content}}</textarea>
</div>
{{if $attachment}}
<div id="jot-attachment-wrap">
<input class="jot-attachment" name="attachment" id="jot-attachment" type="text" value="{{$attachment}}" readonly="readonly" onclick="this.select();">
</div>
{{/if}}
<div id="profile-jot-submit-wrapper" class="jothidden">
<div id="profile-jot-submit-left" class="btn-toolbar pull-left">
<div class="btn-group">
<button id="main-editor-bold" class="btn btn-default btn-sm" title="{{$bold}}" onclick="inserteditortag('b', 'profile-jot-text'); return false;">
<i class="icon-bold jot-icons"></i>
</button>
<button id="main-editor-italic" class="btn btn-default btn-sm" title="{{$italic}}" onclick="inserteditortag('i', 'profile-jot-text'); return false;">
<i class="icon-italic jot-icons"></i>
</button>
<button id="main-editor-underline" class="btn btn-default btn-sm" title="{{$underline}}" onclick="inserteditortag('u', 'profile-jot-text'); return false;">
<i class="icon-underline jot-icons"></i>
</button>
<button id="main-editor-quote" class="btn btn-default btn-sm" title="{{$quote}}" onclick="inserteditortag('quote', 'profile-jot-text'); return false;">
<i class="icon-quote-left jot-icons"></i>
</button>
<button id="main-editor-code" class="btn btn-default btn-sm" title="{{$code}}" onclick="inserteditortag('code', 'profile-jot-text'); return false;">
<i class="icon-terminal jot-icons"></i>
</button>
</div>
{{if $visitor}}
<div class="btn-group hidden-xs">
{{if $writefiles}}
<button id="wall-file-upload" class="btn btn-default btn-sm" title="{{$attach}}" >
<i id="wall-file-upload-icon" class="icon-paper-clip jot-icons"></i>
</button>
{{/if}}
<button id="profile-link-wrapper" class="btn btn-default btn-sm" title="{{$weblink}}" ondragenter="linkdropper(event);" ondragover="linkdropper(event);" ondrop="linkdrop(event);" onclick="jotGetLink(); return false;">
<i id="profile-link" class="icon-link jot-icons"></i>
</button>
</div>
<div class="btn-group hidden-xs hidden-sm">
<button id="profile-location-wrapper" class="btn btn-default btn-sm" title="{{$setloc}}" onclick="jotGetLocation();return false;">
<i id="profile-location" class="icon-globe jot-icons"></i>
</button>
{{if $noloc}}
<button id="profile-nolocation-wrapper" class="btn btn-default btn-sm" title="{{$noloc}}" onclick="jotClearLocation();return false;" disabled="disabled">
<i id="profile-nolocation" class="icon-circle-blank jot-icons"></i>
</button>
{{/if}}
{{else}}
<div class="btn-group hidden-xs">
{{/if}}
{{if $feature_expire}}
<button id="profile-expire-wrapper" class="btn btn-default btn-sm" title="{{$expires}}" onclick="jotGetExpiry();return false;">
<i id="profile-expires" class="icon-eraser jot-icons"></i>
</button>
{{/if}}
{{if $feature_future}}
<button id="profile-future-wrapper" class="btn btn-default btn-sm" title="{{$future_txt}}" onclick="jotGetPubDate();return false;">
<i id="profile-future" class="icon-time jot-icons"></i>
</button>
{{/if}}
{{if $feature_encrypt}}
<button id="profile-encrypt-wrapper" class="btn btn-default btn-sm" title="{{$encrypt}}" onclick="red_encrypt('{{$cipher}}','#profile-jot-text',$('#profile-jot-text').val());return false;">
<i id="profile-encrypt" class="icon-key jot-icons"></i>
</button>
{{/if}}
{{if $feature_voting}}
<button id="profile-voting-wrapper" class="btn btn-default btn-sm" title="{{$voting}}" onclick="toggleVoting();return false;">
<i id="profile-voting" class="icon-check-empty jot-icons"></i>
</button>
{{/if}}
</div>
<div class="btn-group visible-xs visible-sm">
<button type="button" id="more-tools" class="btn btn-default btn-sm dropdown-toggle" data-toggle="dropdown" aria-expanded="false">
<i id="more-tools-icon" class="icon-caret-down jot-icons"></i>
</button>
<ul class="dropdown-menu dropdown-menu-right" role="menu">
<li class="visible-xs"><a href="#" onclick="preview_post();return false;"><i class="icon-eye-open"></i>&nbsp;{{$preview}}</a></li>
{{if $visitor}}
<li class="divider visible-xs"></li>
{{if $writefiles}}<li class="visible-xs"><a id="wall-file-upload-sub" href="#" ><i class="icon-paper-clip"></i>&nbsp;{{$attach}}</a></li>{{/if}}
<li class="visible-xs"><a href="#" onclick="jotGetLink(); return false;"><i class="icon-link"></i>&nbsp;{{$weblink}}</a></li>
<!--li class="visible-xs"><a href="#" onclick="jotVideoURL(); return false;"><i class="icon-facetime-video"></i>&nbsp;{{$video}}</a></li-->
<!--li class="visible-xs"><a href="#" onclick="jotAudioURL(); return false;"><i class="icon-volume-up"></i>&nbsp;{{$audio}}</a></li-->
{{/if}}
<li class="divider visible-xs"></li>
<li class="visible-xs visible-sm"><a href="#" onclick="jotGetLocation(); return false;"><i class="icon-globe"></i>&nbsp;{{$setloc}}</a></li>
{{if $noloc}}
<li class="visible-xs visible-sm"><a href="#" onclick="jotClearLocation(); return false;"><i class="icon-circle-blank"></i>&nbsp;{{$noloc}}</a></li>
{{/if}}
{{if $feature_expire}}
<li class="visible-xs visible-sm"><a href="#" onclick="jotGetExpiry(); return false;"><i class="icon-eraser"></i>&nbsp;{{$expires}}</a></li>
{{/if}}
{{if $feature_encrypt}}
<li class="visible-xs visible-sm"><a href="#" onclick="red_encrypt('{{$cipher}}','#profile-jot-text',$('#profile-jot-text').val());return false;"><i class="icon-key"></i>&nbsp;{{$encrypt}}</a></li>
{{/if}}
{{if $feature_voting}}
<li class="visible-xs visible-sm"><a href="#" onclick="toggleVoting(); return false;"><i id="profile-voting-sub" class="icon-check-empty"></i>&nbsp;{{$voting}}</a></li>
{{/if}}
</ul>
</div>
</div>
<div id="profile-rotator-wrapper">
<div id="profile-rotator"></div>
</div>
<div id="profile-jot-submit-right" class="btn-group pull-right">
{{if $preview}}
<button class="btn btn-default btn-sm hidden-xs" onclick="preview_post();return false;" title="{{$preview}}">
<i class="icon-eye-open jot-icons" ></i>
</button>
{{/if}}
{{if $showacl}}
<button id="dbtn-acl" class="btn btn-default btn-sm" data-toggle="modal" data-target="#aclModal" title="{{$permset}}" onclick="return false;">
<i id="jot-perms-icon" class="icon-{{$lockstate}} jot-icons"></i>{{if $bang}}&nbsp;<i class="icon-exclamation jot-icons"></i>{{/if}}
</button>
{{/if}}
<button id="dbtn-submit" class="btn btn-primary btn-sm" type="submit" tabindex=3 name="button-submit" >{{$share}}</button>
</div>
<div id="profile-jot-perms-end"></div>
<div id="profile-jot-plugin-wrapper">
{{$jotplugins}}
</div>
</div>
<div id="profile-jot-text-loading"></div>
<div id="profile-jot-end" class="clear"></div>
<div id="jot-preview-content" style="display:none;"></div>
</form>
</div>
<!-- Modal for item expiry-->
<div class="modal" id="expiryModal" tabindex="-1" role="dialog" aria-labelledby="expiryModalLabel" aria-hidden="true">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
<h4 class="modal-title" id="expiryModalLabel">{{$expires}}</h4>
</div>
<!-- <div class="modal-body"> -->
<div class="modal-body form-group" style="width:90%">
<div class='date'><input type='text' placeholder='yyyy-mm-dd HH:MM' name='start_text' id='expiration-date' class="form-control" /></div><script type='text/javascript'>$(function () {var picker = $('#expiration-date').datetimepicker({format:'Y-m-d H:i', minDate: 0 }); })</script>
</div>
<!-- </div> -->
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal">{{$expiryModalCANCEL}}</button>
<button id="expiry-modal-OKButton" type="button" class="btn btn-primary">{{$expiryModalOK}}</button>
</div>
</div><!-- /.modal-content -->
</div><!-- /.modal-dialog -->
</div><!-- /.modal -->
<!-- Modal for item created-->
<div class="modal" id="createdModal" tabindex="-1" role="dialog" aria-labelledby="createdModalLabel" aria-hidden="true">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
<h4 class="modal-title" id="createdModalLabel">{{$future_txt}}</h4>
</div>
<!-- <div class="modal-body"> -->
<div class="modal-body form-group" style="width:90%">
<div class='date'><input type='text' placeholder='yyyy-mm-dd HH:MM' name='created_text' id='created-date' class="form-control" /></div><script type='text/javascript'>$(function () {var picker = $('#created-date').datetimepicker({format:'Y-m-d H:i', minDate: 0 }); })</script>
</div>
<!-- </div> -->
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal">{{$expiryModalCANCEL}}</button>
<button id="created-modal-OKButton" type="button" class="btn btn-primary">{{$expiryModalOK}}</button>
</div>
</div><!-- /.modal-content -->
</div><!-- /.modal-dialog -->
</div><!-- /.modal -->
{{if $content || $attachment || $expanded}}
<script>initEditor();</script>
{{/if}}

View File

@ -22,6 +22,7 @@
'submit' : "{{$submit}}",
'linkurl' : "{{$linkurl}}",
'leavethispage' : "{{$leavethispage}}",
'location' : "{{$location}}",
't01' : "{{$t01}}",
't02' : "{{$t02}}",

View File

@ -159,12 +159,12 @@
{{/foreach}}
</select>
</div>
{{/if}}
{{include file="field_checkbox.tpl" field=$cal_first_day}}
<div class="settings-submit-wrapper" >
<button type="submit" name="submit" class="btn btn-primary">{{$submit}}</button>
</div>
</div>
{{/if}}
</div>
</div>
</div>