Merge branch 'master' of https://github.com/redmatrix/hubzilla into master_merge

This commit is contained in:
redmatrix 2016-04-03 16:16:14 -07:00
commit b4c1baada1
24 changed files with 2249 additions and 1122 deletions

View File

@ -202,7 +202,7 @@ function chatroom_list($uid) {
require_once('include/security.php');
$sql_extra = permissions_sql($uid);
$r = q("select allow_cid, allow_gid, deny_cid, deny_gid, cr_name, cr_id, count(cp_id) as cr_inroom from chatroom left join chatpresence on cr_id = cp_room where cr_uid = %d $sql_extra group by cr_name, cr_id order by cr_name",
$r = q("select allow_cid, allow_gid, deny_cid, deny_gid, cr_name, cr_expire, cr_id, count(cp_id) as cr_inroom from chatroom left join chatpresence on cr_id = cp_room where cr_uid = %d $sql_extra group by cr_name, cr_id order by cr_name",
intval($uid)
);

View File

@ -1,9 +1,25 @@
v2.5.0-beta (2015-11-15)
------------------------
v2.6.1 (2016-02-17)
-------------------
internal refactor of the "grid" system, providing increased flexbility for plugins like
[fullcalendar-scheduler](https://github.com/fullcalendar/fullcalendar-scheduler/releases)
- make nowIndicator positioning refresh on window resize
v2.6.0 (2016-01-07)
-------------------
- current time indicator (#414)
- bundled with most recent version of moment (2.11.0)
- UMD wrapper around lang files now handles commonjs (#2918)
- fix bug where external event dragging would not respect eventOverlap
- fix bug where external event dropping would not render the whole-day highlight
v2.5.0 (2015-11-30)
-------------------
- internal timezone refactor. fixes #2396, #2900, #2945, #2711
- internal "grid" system refactor. improved API for plugins.
v2.4.0 (2015-08-16)

View File

@ -1,5 +1,5 @@
/*!
* FullCalendar v2.5.0-beta Stylesheet
* FullCalendar v2.6.1 Stylesheet
* Docs & License: http://fullcalendar.io/
* (c) 2015 Adam Shaw
*/
@ -672,6 +672,15 @@ a.fc-more:hover {
padding: 10px;
}
/* Now Indicator
--------------------------------------------------------------------------------------------------*/
.fc-now-indicator {
position: absolute;
border: 0 solid red;
}
/* Toolbar
--------------------------------------------------------------------------------------------------*/
@ -888,27 +897,46 @@ a.fc-more:hover {
z-index: 2;
}
.fc-time-grid .fc-bgevent-skeleton,
.fc-time-grid .fc-content-col {
position: relative; /* because now-indicator lives directly inside */
}
.fc-time-grid .fc-content-skeleton {
position: absolute;
z-index: 3;
top: 0;
left: 0;
right: 0;
}
.fc-time-grid .fc-bgevent-skeleton {
/* divs within a cell within the fc-content-skeleton */
.fc-time-grid .fc-business-container {
position: relative;
z-index: 1;
}
.fc-time-grid .fc-bgevent-container {
position: relative;
z-index: 2;
}
.fc-time-grid .fc-highlight-container {
position: relative;
z-index: 3;
}
.fc-time-grid .fc-highlight-skeleton {
.fc-time-grid .fc-event-container {
position: relative;
z-index: 4;
}
.fc-time-grid .fc-content-skeleton {
.fc-time-grid .fc-now-indicator-line {
z-index: 5;
}
.fc-time-grid .fc-helper-skeleton {
.fc-time-grid .fc-helper-container { /* also is fc-event-container */
position: relative;
z-index: 6;
}
@ -948,11 +976,6 @@ a.fc-more:hover {
/* TimeGrid Event Containment
--------------------------------------------------------------------------------------------------*/
.fc-time-grid .fc-event-container, /* a div within a cell within the fc-content-skeleton */
.fc-time-grid .fc-bgevent-container { /* a div within a cell within the fc-bgevent-skeleton */
position: relative;
}
.fc-ltr .fc-time-grid .fc-event-container { /* space on the sides of events for LTR (default) */
margin: 0 2.5% 0 2px;
}
@ -1067,3 +1090,35 @@ be a descendant of the grid when it is being dragged.
.fc-time-grid-event .fc-resizer:after {
content: "=";
}
/* Now Indicator
--------------------------------------------------------------------------------------------------*/
.fc-time-grid .fc-now-indicator-line {
border-top-width: 1px;
left: 0;
right: 0;
}
/* arrow on axis */
.fc-time-grid .fc-now-indicator-arrow {
margin-top: -5px; /* vertically center on top coordinate */
}
.fc-ltr .fc-time-grid .fc-now-indicator-arrow {
left: 0;
/* triangle pointing right... */
border-width: 5px 0 5px 6px;
border-top-color: transparent;
border-bottom-color: transparent;
}
.fc-rtl .fc-time-grid .fc-now-indicator-arrow {
right: 0;
/* triangle pointing left... */
border-width: 5px 6px 5px 0;
border-top-color: transparent;
border-bottom-color: transparent;
}

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -1,5 +1,5 @@
/*!
* FullCalendar v2.5.0-beta Print Stylesheet
* FullCalendar v2.6.1 Print Stylesheet
* Docs & License: http://fullcalendar.io/
* (c) 2015 Adam Shaw
*/
@ -42,11 +42,17 @@ tbody,
background: #fff !important;
}
/* kill the overlaid, absolutely-positioned common components */
/* kill the overlaid, absolutely-positioned components */
/* common... */
.fc-bg,
.fc-bgevent-skeleton,
.fc-highlight-skeleton,
.fc-helper-skeleton {
.fc-helper-skeleton,
/* for timegrid. within cells within table skeletons... */
.fc-bgevent-container,
.fc-business-container,
.fc-highlight-container,
.fc-helper-container {
display: none;
}

View File

@ -1,5 +1,5 @@
/*!
* FullCalendar v2.5.0-beta Google Calendar Plugin
* FullCalendar v2.6.1 Google Calendar Plugin
* Docs & License: http://fullcalendar.io/
* (c) 2015 Adam Shaw
*/

File diff suppressed because one or more lines are too long

View File

@ -1,6 +1,61 @@
Changelog
=========
### 2.12.0 [See full changelog](https://gist.github.com/ichernev/6e5bfdf8d6522fc4ac73)
## Enhancements:
* [#2932](https://github.com/moment/moment/pull/2932) List loaded locales
* [#2818](https://github.com/moment/moment/pull/2818) Parse ISO-8061 duration containing both day and week values
* [#2774](https://github.com/moment/moment/pull/2774) Implement locale inheritance and locale updating
## Bugfixes:
* [#2970](https://github.com/moment/moment/pull/2970) change add subtract to handle decimal values by rounding
* [#2887](https://github.com/moment/moment/pull/2887) Fix toJSON casting of invalid moment
* [#2897](https://github.com/moment/moment/pull/2897) parse string arguments for month() correctly, closes #2884
* [#2946](https://github.com/moment/moment/pull/2946) Fix usage suggestions for min and max
## New locales:
* [#2917](https://github.com/moment/moment/pull/2917) Locale Punjabi(Gurmukhi) India format conversion
And more
### 2.11.2 (Fix ReDoS attack vector)
* [#2939](https://github.com/moment/moment/pull/2939) use full-string match to speed up aspnet regex match
### 2.11.1 [See full changelog](https://gist.github.com/ichernev/8ec3ee25b749b4cff3c2)
## Bugfixes:
* [#2881](https://github.com/moment/moment/pull/2881) Revert "Merge pull request #2746 from mbad0la:develop" Sep->Sept
* [#2868](https://github.com/moment/moment/pull/2868) Add format and parse token Y, so it actually works
* [#2865](https://github.com/moment/moment/pull/2865) Use typeof checks for undefined for global variables
* [#2858](https://github.com/moment/moment/pull/2858) Fix Date mocking regression introduced in 2.11.0
* [#2864](https://github.com/moment/moment/pull/2864) Include changelog in npm release
* [#2830](https://github.com/moment/moment/pull/2830) dep: add grunt-cli
* [#2869](https://github.com/moment/moment/pull/2869) Fix months parsing for some locales
### 2.11.0 [See full changelog](https://gist.github.com/ichernev/6594bc29719dde6b2f66)
* [#2624](https://github.com/moment/moment/pull/2624) Proper handling of invalid moments
* [#2634](https://github.com/moment/moment/pull/2634) Fix strict month parsing issue in cs,ru,sk
* [#2735](https://github.com/moment/moment/pull/2735) Reset the locale back to 'en' after defining all locales in min/locales.js
* [#2702](https://github.com/moment/moment/pull/2702) Week rework
* [#2746](https://github.com/moment/moment/pull/2746) Changed September Abbreviation to "Sept" in locale-specific english
files and default locale file
* [#2646](https://github.com/moment/moment/pull/2646) Fix [#2645](https://github.com/moment/moment/pull/2645) - invalid dates pre-1970
* [#2641](https://github.com/moment/moment/pull/2641) Implement basic format and comma as ms separator in ISO 8601
* [#2665](https://github.com/moment/moment/pull/2665) Implement stricter weekday parsing
* [#2700](https://github.com/moment/moment/pull/2700) Add [Hh]mm and [Hh]mmss formatting tokens, so you can parse 123 with
hmm for example
* [#2565](https://github.com/moment/moment/pull/2565) [#2835](https://github.com/moment/moment/pull/2835) Expose arguments used for moment creation with creationData
(fix [#2443](https://github.com/moment/moment/pull/2443))
* [#2648](https://github.com/moment/moment/pull/2648) fix issue [#2640](https://github.com/moment/moment/pull/2640): support instanceof operator
* [#2709](https://github.com/moment/moment/pull/2709) Add isSameOrAfter and isSameOrBefore comparison methods
* [#2721](https://github.com/moment/moment/pull/2721) Fix moment creation from object with strings values
* [#2740](https://github.com/moment/moment/pull/2740) Enable 'd hh:mm:ss.sss' format for durations
* [#2766](https://github.com/moment/moment/pull/2766) [#2833](https://github.com/moment/moment/pull/2833) Alternate Clock Source Support
### 2.10.6
[#2515](https://github.com/moment/moment/pull/2515) Fix regression introduced
@ -44,7 +99,7 @@ languages:
* [2097](https://github.com/moment/moment/issues/2097) add ar-tn locale
deprecations:
* [2074](https://github.com/moment/moment/issues/2074) Implement `moment.fn.utcOffset`, deprecate `momen.fn.zone`
* [2074](https://github.com/moment/moment/issues/2074) Implement `moment.fn.utcOffset`, deprecate `moment.fn.zone`
features:
* [2088](https://github.com/moment/moment/issues/2088) add moment.fn.isBetween
@ -271,7 +326,7 @@ Bugfix: Fixed parsing of first century dates
Bugfix: Parsing 10Sep2001 should work as expected
Bugfix: Fixed wierdness with `moment.utc()` parsing.
Bugfix: Fixed weirdness with `moment.utc()` parsing.
Changed language ordinal method to return the number + ordinal instead of just the ordinal.

View File

@ -1,4 +1,4 @@
Copyright (c) 2011-2015 Tim Wood, Iskren Chernev, Moment.js contributors
Copyright (c) 2011-2016 Tim Wood, Iskren Chernev, Moment.js contributors
Permission is hereby granted, free of charge, to any person
obtaining a copy of this software and associated documentation

View File

@ -1,18 +1,18 @@
[![Join the chat at https://gitter.im/moment/moment](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/moment/moment?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
[![NPM version][npm-version-image]][npm-url] [![NPM downloads][npm-downloads-image]][npm-url] [![MIT License][license-image]][license-url] [![Build Status][travis-image]][travis-url]
[![Coverage Status](https://coveralls.io/repos/moment/moment/badge.svg?branch=master)](https://coveralls.io/r/moment/moment?branch=master)
[![Coverage Status](https://coveralls.io/repos/moment/moment/badge.svg?branch=develop)](https://coveralls.io/r/moment/moment?branch=develop)
A lightweight JavaScript date library for parsing, validating, manipulating, and formatting dates.
## [Documentation](http://momentjs.com/docs/)
## Port to ES6 (version 2.10.0)
## Port to ECMAScript 6 (version 2.10.0)
Moment 2.10.0 does not bring any new features, but the code is now written in
es6 modules and placed inside `src/`. Previously `moment.js`, `locale/*.js` and
ECMAScript 6 modules and placed inside `src/`. Previously `moment.js`, `locale/*.js` and
`test/moment/*.js`, `test/locale/*.js` contained the source of the project. Now
the source is in `src/`, temporary build (es5) files are placed under
the source is in `src/`, temporary build (ECMAScript 5) files are placed under
`build/umd/` (for running tests during development), and the `moment.js` and
`locale/*.js` files are updated only on release.

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

View File

@ -240,6 +240,8 @@ function chat_content(&$a) {
'$newroom' => t('Create New'),
'$is_owner' => ((local_channel() && local_channel() == App::$profile['profile_uid']) ? 1 : 0),
'$chatroom_new' => $chatroom_new,
'$expire' => t('Expiration'),
'$expire_unit' => t('min') //minutes
));
return $o;

51
view/css/mod_cal.css Normal file
View File

@ -0,0 +1,51 @@
/* fix borders */
.fc th:first-child,
.fc td:first-child {
border-left-width: 0px;
}
.fc th:last-child,
.fc td:last-child {
border-right-width: 0px;
border-bottom-width: 0px;
}
.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;
}
.bootstrap-tagsinput {
width: 100%;
padding: 6px 12px;
}
.event-wrapper,
.vevent {
max-width: 700px;
}
.event-owner {
padding: 10px;
}
.event-owner img {
margin-right: 5px;
}
.vevent,
.event-buttons {
padding: 10px;
}

View File

@ -11,8 +11,13 @@
padding: 7px 3px 7px 10px;
}
#chatrooms-index th:nth-child(3),
#chatrooms-index td:nth-child(3){
#chatrooms-index th:nth-child(2),
#chatrooms-index td:nth-child(2){
text-align: right;
}
#chatrooms-index th:nth-child(4),
#chatrooms-index td:nth-child(4){
padding: 7px 10px 7px 7px;
}

View File

@ -1,7 +1,14 @@
/* fix borders */
#events-calendar {
margin-left: -1px;
margin-bottom: -1px;
.fc th:first-child,
.fc td:first-child {
border-left-width: 0px;
}
.fc th:last-child,
.fc td:last-child {
border-right-width: 0px;
border-bottom-width: 0px;
}
.fc-unthemed th,

View File

@ -1518,21 +1518,27 @@ nav .dropdown-menu {
word-wrap: break-word;
}
.generic-content-wrapper.fullscreen {
position: absolute;
main.fullscreen {
left: 0px;
width: 100%;
height: 100%;
max-width: none;
}
main.fullscreen .generic-content-wrapper {
position: absolute;
width: 100%;
top: 0px;
left: 0px;
border: 0px;
border-radius: 0px;
}
.generic-content-wrapper.fullscreen .section-title-wrapper {
main.fullscreen .section-title-wrapper {
border-radius: 0px;
}
.generic-content-wrapper.fullscreen .section-content-wrapper {
main.fullscreen .section-content-wrapper,
main.fullscreen .section-content-wrapper-np {
border-radius: 0px;
}

View File

@ -55,15 +55,13 @@ $(document).ready(function() {
function makeFullScreen(full) {
if(typeof full=='undefined' || full == true) {
$('main').css({'transition': 'none', 'left': '0px', 'width': '100%', 'max-width': 'none'});
$('.generic-content-wrapper').addClass('fullscreen');
$('main').css({'transition': 'none'}).addClass('fullscreen');
$('#fullscreen-btn, header, nav, aside').css({'display': 'none'});
$('#inline-btn').show();
}
else {
$('main').css({'left': '', 'width': '', 'max-width': ''});
$('.generic-content-wrapper').removeClass('fullscreen');
$('main').removeClass('fullscreen');
$('#fullscreen-btn, header, nav, aside').css({'display': ''});
$('#inline-btn').hide();
$('main').css({'transition': ''});

View File

@ -18,21 +18,16 @@
<div id="chatTopBar">
<div id="chatLineHolder"></div>
</div>
<div class="clear"></div>
<div id="chatBottomBar" >
<div class="tip"></div>
<form id="chat-form" method="post" action="#">
<input type="hidden" name="room_id" value="{{$room_id}}" />
<textarea id="chatText" name="chat_text" class="form-control"></textarea>
<div class="form-group">
<textarea id="chatText" name="chat_text" class="form-control"></textarea>
</div>
<div id="chat-submit-wrapper">
<div id="chat-submit" class="dropup pull-right">
<button class="btn btn-default btn-sm dropdown-toggle" type="button" data-toggle="dropdown"><i class="icon-caret-down"></i></button>
<button class="btn btn-default btn-sm dropdown-toggle" type="button" data-toggle="dropdown"><i class="icon-caret-up"></i></button>
<button class="btn btn-primary btn-sm" type="submit" id="chat-submit" name="submit" value="{{$submit}}">{{$submit}}</button>
<ul class="dropdown-menu">
<li class="nav-item"><a class="nav-link" href="{{$baseurl}}/chatsvc?f=&room_id={{$room_id}}&status=online"><i class="icon-circle online"></i>&nbsp;{{$online}}</a></li>
@ -65,29 +60,27 @@
<div class="btn-group hidden-xs">
<button id="chat-link-wrapper" class="btn btn-default btn-sm" onclick="chatJotGetLink(); return false;" >
<i id="chat-link" class="icon-link jot-icons" title="{{$insert}}" ></i>
</button-->
</button>
</div>
{{if $feature_encrypt}}
<div class="btn-group hidden-sm hidden-xs">
<div class="btn-group hidden-xs">
<button id="chat-encrypt-wrapper" class="btn btn-default btn-sm" onclick="red_encrypt('{{$cipher}}', '#chatText', $('#chatText').val()); return false;">
<i id="chat-encrypt" class="icon-key jot-icons" title="{{$encrypt}}" ></i>
</button>
</div>
{{/if}}
<div class="btn-group visible-xs visible-sm">
<div class="btn-group dropup visible-xs">
<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>
<i id="more-tools-icon" class="icon-caret-up jot-icons"></i>
</button>
<ul class="dropdown-menu dropdown-menu-right" role="menu">
<li class="visible-xs"><a href="#" onclick="chatJotGetLink(); return false;" ><i class="icon-link"></i>&nbsp;{{$insert}}</a></li>
{{if $feature_encrypt}}
<li class="divider visible-xs"></li>
<li class="visible-sm visible-xs"><a href="#" onclick="red_encrypt('{{$cipher}}', '#chatText' ,$('#chatText').val()); return false;"><i class="icon-key"></i>&nbsp;{{$encrypt}}</a></li>
<li class="divider"></li>
<li class="visible-xs"><a href="#" onclick="red_encrypt('{{$cipher}}', '#chatText' ,$('#chatText').val()); return false;"><i class="icon-key"></i>&nbsp;{{$encrypt}}</a></li>
{{/if}}
</ul>
</div>
</div>
<div id="chat-rotator-wrapper" class="pull-left">
<div id="chat-rotator"></div>
@ -113,7 +106,7 @@ $(document).ready(function() {
});
$(window).resize(function () {
if($('.generic-content-wrapper').hasClass('fullscreen')) {
if($('main').hasClass('fullscreen')) {
adjustFullscreenTopBarHeight();
}
else {
@ -165,11 +158,11 @@ function update_chats(chats) {
if(item.self) {
newNode.setAttribute('class', 'chat-item-self clear');
$(newNode).html('<div class="chat-body-self"><div class="chat-item-title-self"><span class="chat-item-name-self">' + item.name + ' </span><span class="autotime chat-item-time-self" title="' + item.isotime + '">' + item.localtime + '</span></div><div class="chat-item-text-self">' + item.text + '</div></div><img class="chat-item-photo-self" src="' + item.img + '" alt="' + item.name + '" />');
$(newNode).html('<div class="chat-body-self"><div class="chat-item-title-self wall-item-ago"><span class="chat-item-name-self">' + item.name + ' </span><span class="autotime chat-item-time-self" title="' + item.isotime + '">' + item.localtime + '</span></div><div class="chat-item-text-self">' + item.text + '</div></div><img class="chat-item-photo-self" src="' + item.img + '" alt="' + item.name + '" />');
}
else {
newNode.setAttribute('class', 'chat-item clear');
$(newNode).html('<img class="chat-item-photo" src="' + item.img + '" alt="' + item.name + '" /><div class="chat-body"><div class="chat-item-title"><span class="chat-item-name">' + item.name + ' </span><span class="autotime chat-item-time" title="' + item.isotime + '">' + item.localtime + '</span></div><div class="chat-item-text">' + item.text + '</div></div>');
$(newNode).html('<img class="chat-item-photo" src="' + item.img + '" alt="' + item.name + '" /><div class="chat-body"><div class="chat-item-title wall-item-ago"><span class="chat-item-name">' + item.name + ' </span><span class="autotime chat-item-time" title="' + item.isotime + '">' + item.localtime + '</span></div><div class="chat-item-text">' + item.text + '</div></div>');
}
$('#chatLineHolder').append(newNode);
$(".autotime").timeago();

View File

@ -12,14 +12,16 @@
<div class="section-content-wrapper-np">
<table id="chatrooms-index">
<tr>
<th width="98%">{{$name}}</th>
<th width="97%">{{$name}}</th>
<th width="1%">{{$expire}}</th>
<th width="1%" class="chatrooms-index-tool"></th>
<th width="1%"></th>
</tr>
{{foreach $rooms as $room}}
<tr class="chatroom-index-row">
<td><a href="{{$baseurl}}/chat/{{$nickname}}/{{$room.cr_id}}">{{$room.cr_name}}</a></td>
<td class="chatrooms-index-tool dropdown">
<td>{{$room.cr_expire}}&nbsp;min</td>
<td class="chatrooms-index-tool dropdown pull-right">
{{if $room.allow_cid || $room.allow_gid || $room.deny_cid || $room.deny_gid}}
<i class="icon-lock lockview dropdown-toggle" data-toggle="dropdown" onclick="lockview('chatroom',{{$room.cr_id}});"></i>
<ul id="panel-{{$room.cr_id}}" class="lockview-panel dropdown-menu"></ul>

View File

@ -1,6 +1,8 @@
<div class="generic-content-wrapper">
<div class="section-title-wrapper">
<div class="pull-right">
<button id="fullscreen-btn" type="button" class="btn btn-default btn-xs" onclick="makeFullScreen();"><i class="icon-resize-full"></i></button>
<button id="inline-btn" type="button" class="btn btn-default btn-xs" onclick="makeFullScreen(false);"><i class="icon-resize-small"></i></button>
<button class="btn btn-success btn-xs" onclick="openClose('form');">{{$new_event.1}}</button>
<div class="btn-group">
<button class="btn btn-default btn-xs" onclick="changeView('prev', false);" title="{{$prev}}"><i class="icon-backward"></i></button>

View File

@ -2,6 +2,8 @@
<div class="generic-content-wrapper">
<div class="section-title-wrapper">
<div class="pull-right">
<button id="fullscreen-btn" type="button" class="btn btn-default btn-xs" onclick="makeFullScreen();"><i class="icon-resize-full"></i></button>
<button id="inline-btn" type="button" class="btn btn-default btn-xs" onclick="makeFullScreen(false);"><i class="icon-resize-small"></i></button>
<div class="btn-group">
<button class="btn btn-default btn-xs" onclick="changeView('prev', false);" title="{{$prev}}"><i class="icon-backward"></i></button>
<button id="events-spinner" class="btn btn-default btn-xs" onclick="changeView('today', false);" title="{{$today}}"><i class="icon-bullseye"></i></button>