Merge branch 'master' into vue

This commit is contained in:
Julius Härtl
2019-04-25 18:11:03 +02:00
194 changed files with 9532 additions and 4059 deletions
+6 -1
View File
@@ -20,8 +20,13 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
use OCP\Util;
style('deck', 'style');
script('deck', 'deck');
\OC::$server->getEventDispatcher()->dispatch('\OCP\Collaboration\Resources::loadAdditionalScripts');
?>
<input type="hidden" id="debug-mode" value="<?php p($_['debug'] ? 'true' : 'false'); ?>">
<input type="hidden" id="debug-mode" value="<?php p($_['debug'] ? 'true' : 'false'); ?>">
+4 -4
View File
@@ -13,19 +13,19 @@
</form>
</div>
<button ng-if="params.filter!='archive'" ng-click="switchFilter('archive')" title="<?php p($l->t('Show archived cards')); ?>">
<button ng-if="params.filter!='archive'" ng-click="switchFilter('archive')" data-toggle="tooltip" data-placement="bottom" title="<?php p($l->t('Show archived cards')); ?>">
<i class="icon icon-archive" style="opacity:0.5;"></i>
<span class="hidden-visually"><?php p($l->t('Show archived cards')); ?></span>
</button>
<button ng-if="params.filter=='archive'" ng-click="switchFilter('')" title="<?php p($l->t('Hide archived cards')); ?>">
<button ng-if="params.filter=='archive'" ng-click="switchFilter('')" data-toggle="tooltip" data-placement="bottom" title="<?php p($l->t('Hide archived cards')); ?>">
<i class="icon icon-archive"></i>
<span class="hidden-visually"><?php p($l->t('Hide archived cards')); ?></span>
</button>
<button ng-click="toggleCompactMode()" title="<?php p($l->t('Toggle compact mode')); ?>">
<button ng-click="toggleCompactMode()" data-toggle="tooltip" data-placement="bottom" title="<?php p($l->t('Toggle compact mode')); ?>">
<i class="icon" ng-class="{ 'icon-toggle-compact-collapsed': compactMode, 'icon-toggle-compact-expanded': !compactMode }"></i>
<span class="hidden-visually"><?php p($l->t('Toggle compact mode')); ?></span>
</button>
<button ui-sref="board.detail({ id: id, tab: 0})" title="<?php p($l->t('Show board details')); ?>">
<button ui-sref="board.detail({ id: id, tab: 0})" data-toggle="tooltip" data-placement="bottom" title="<?php p($l->t('Show board details')); ?>">
<i class="icon icon-settings"></i>
<span class="hidden-visually"><?php p($l->t('Show board details')); ?></span>
</button>
+3 -3
View File
@@ -20,7 +20,7 @@
</div>
<div class="crumb title" ng-if="params.filter=='archive'">
<a><span class="icon icon-archive"></span></a>
<a>Archived cards</a>
<a><?php p($l->t('Archived cards')); ?></a>
</div>
<div class="board-header-controls hidden">
@@ -63,7 +63,7 @@
data-as-sortable-item
ng-click="$event.stopPropagation()"
ui-sref="board.card({boardId: id, cardId: c.id})"
ng-class="{'archived': cardservice.get(c.id).archived, 'has-labels': cardservice.get(c.id).labels.length>0, 'current': cardservice.get(c.id).id == params.cardId }"
ng-class="{'archived': cardservice.get(c.id).archived, 'has-labels': cardservice.get(c.id).labels.length>0, 'current': cardservice.get(c.id).id == params.cardId, 'overdue': cardservice.get(c.id).overdue == 3, 'now': cardservice.get(c.id).overdue == 2, 'next': cardservice.get(c.id).overdue == 1, 'has-tasks': getCheckboxes(cardservice.get(c.id).description)[1] > 0, 'has-tasks-completed': getCheckboxes(cardservice.get(c.id).description)[1] > 0 && getCheckboxes(cardservice.get(c.id).description)[1] == getCheckboxes(cardservice.get(c.id).description)[0] }"
nv-file-drop="" uploader="uploader" options="{cardId: c.id}">
<div class="drop-indicator" uploader="uploader" nv-file-over>
<p><?php p($l->t('Drop your files here to upload it to the card')); ?></p>
@@ -73,7 +73,7 @@
<h4>
<span class="editable-inline"
ng-show="!c.status.editCard"
ng-click="startTitleEdit(c)">{{cardservice.get(c.id).title}}</span>
ng-click="$event.stopPropagation(); startTitleEdit(c)">{{cardservice.get(c.id).title}}</span>
<form ng-if="c.status.editCard" ng-submit="finishTitleEdit(c)">
<input
class="input-inline"
+29 -9
View File
@@ -29,8 +29,15 @@
</ui-select-match>
<ui-select-choices refresh="searchForUser($select.search)" refresh-delay="0" repeat="sharee in boardservice.sharees">
<div class="avatardiv" avatar data-user="{{ sharee.participant.uid }}" data-displayname="{{ sharee.participant.displayname }}" ng-if="sharee.type==OC.Share.SHARE_TYPE_USER"></div>
<div class="avatardiv" ng-if="sharee.type==OC.Share.SHARE_TYPE_GROUP"><i class="icon icon-{{aclTypeString(sharee)}}" title="<?php p($l->t('Access for')); ?> {{aclTypeString(sharee)}}"></i></div>
<span class="has-tooltip username">
<div class="avatardiv" ng-if="sharee.type==OC.Share.SHARE_TYPE_GROUP"><i class="icon icon-{{aclTypeString(sharee)}}" ></i></div>
<span class="has-tooltip username" ng-if="sharee.type==OC.Share.SHARE_TYPE_GROUP">
{{ sharee.participant.displayname }} (<?php p($l->t('Group')); ?>)
</span>
<div class="avatardiv circles" ng-if="sharee.type==OC.Share.SHARE_TYPE_CIRCLE"><i class="icon icon-circles icon-white"></i></div>
<span class="has-tooltip username" ng-if="sharee.type==OC.Share.SHARE_TYPE_CIRCLE">
{{ sharee.participant.displayname }} (<?php p($l->t('Circle')); ?>)
</span>
<span class="has-tooltip username" ng-if="sharee.type==OC.Share.SHARE_TYPE_USER">
{{ sharee.participant.displayname }}
</span>
</ui-select-choices>
@@ -50,19 +57,27 @@
<li ng-repeat="acl in boardservice.getCurrent().acl track by acl.participant.primaryKey">
<span class="icon-loading-small" style="display:none;" title="<?php p($l->t('Loading')); ?>"></span>
<div class="avatardiv" avatar data-contactsmenu="true" data-user="{{ acl.participant.uid }}" data-displayname="{{ acl.participant.displayname }}" ng-if="acl.type==OC.Share.SHARE_TYPE_USER"></div>
<div class="avatardiv" ng-if="acl.type==OC.Share.SHARE_TYPE_GROUP"><i class="icon icon-{{aclTypeString(acl)}}" title="<?php p($l->t('Access for')); ?> {{aclTypeString(acl)}}"></i></div>
<div class="avatardiv" ng-if="acl.type!=OC.Share.SHARE_TYPE_USER"><i class="icon icon-{{aclTypeString(acl)}}" ></i></div>
<span class="has-tooltip username">
<span class="has-tooltip username" ng-if="acl.type==OC.Share.SHARE_TYPE_USER">
{{ acl.participant.displayname }}
</span>
<span class="has-tooltip username" ng-if="acl.type==OC.Share.SHARE_TYPE_GROUP">
{{ acl.participant.displayname }} (<?php p($l->t('Group')); ?>)
</span>
<span class="has-tooltip username" ng-if="acl.type==OC.Share.SHARE_TYPE_CIRCLE">
{{ acl.participant.displayname }} (<?php p($l->t('Circle')); ?> {{ acl.participant.typeString }})
<div>{{ acl.participant.circleOwner.display_name }}</div>
</span>
<span class="sharingOptionsGroup">
<span class="shareOption" ng-if="boardservice.canManage()">
<input type="checkbox" class="permissions checkbox" id="checkbox-permission-{{ acl.id }}-share" ng-model="acl.permissionShare" ng-change="aclUpdate(acl)" />
<label for="checkbox-permission-{{ acl.id }}-share"><?php p($l->t('Share')); ?></label>
</span>
<span class="shareOption"ng-if="boardservice.canManage()">
<input type="checkbox" class="permissions checkbox" id="checkbox-permission-{{ acl.id }}-edit" ng-model="acl.permissionEdit" ng-change="aclUpdate(acl)" />
<label for="checkbox-permission-{{ acl.id }}-edit"><?php p($l->t('Edit')); ?></label>
</span>
<span class="shareOption" ng-if="boardservice.canManage()">
<input type="checkbox" class="permissions checkbox" id="checkbox-permission-{{ acl.id }}-share" ng-model="acl.permissionShare" ng-change="aclUpdate(acl)" />
<label for="checkbox-permission-{{ acl.id }}-share"><?php p($l->t('Share')); ?></label>
</span>
<span class="shareOption"ng-if="boardservice.canManage()">
<input type="checkbox" class="permissions checkbox" id="checkbox-permission-{{ acl.id }}-manage" ng-model="acl.permissionManage" ng-change="aclUpdate(acl)" />
@@ -71,7 +86,12 @@
</span>
<a ng-if="boardservice.canManage()" ng-click="aclDelete(acl)"><span class="icon-loading-small hidden"></span><span class="icon icon-delete"></span><span class="hidden-visually"><?php p($l->t('Discard share')); ?></span></a>
</li>
<li ng-if="!boardservice.canShare()">
<?php p($l->t('Sharing has been disabled for your account.')); ?>
</li>
</ul>
<h1>Collections</h1>
<div id="collaborationResources"></div>
</div>
<div id="board-detail-labels" class="tab commentsTabView" ng-if="params.tab==1">
@@ -95,7 +115,7 @@
</div>
</div>
<a ng-if="boardservice.canManage() && label.edit" ng-click="labelUpdate(label)" class="icon" title="<?php p($l->t('Update tag')); ?>"><i class="icon icon-checkmark" ></i><span class="hidden-visually"><?php p($l->t('Update tag')); ?></span></a>
<a ng-if="boardservice.canManage() && !label.edit" ng-click="label.edit=true" class="icon" title="<?php p($l->t('Edit tag')); ?>"><i class="icon icon-rename"></i><span class="hidden-visually"><?php p($l->t('Edit tag')); ?></span></a>
<a ng-if="boardservice.canManage() && !label.edit" ng-click="labelUpdateBefore(label); label.edit=true" class="icon" title="<?php p($l->t('Edit tag')); ?>"><i class="icon icon-rename"></i><span class="hidden-visually"><?php p($l->t('Edit tag')); ?></span></a>
<a ng-if="boardservice.canManage()" ng-click="labelDelete(label)" class="icon" title="<?php p($l->t('Delete tag')); ?>"><i class="icon icon-delete" ></i><span class="hidden-visually"><?php p($l->t('Delete tag')); ?></span></a>
</li>
<li ng-if="status.createLabel">
+1 -1
View File
@@ -95,7 +95,7 @@
</div>
</td>
</tr>
<tr ng-if="status.filter === '' && !status.addBoard" ng-click="status.addBoard=!status.addBoard" class="board-create">
<tr ng-if="canCreate && status.filter === '' && !status.addBoard" ng-click="status.addBoard=!status.addBoard" class="board-create">
<td><span class="icon icon-add"></span></td>
<td colspan="3">
<a ng-click="status.addBoard=!status.addBoard"
+2 -2
View File
@@ -5,7 +5,7 @@
<div class="author currentUser">{{ $ctrl.currentUser.displayName }}</div>
</div>
<form class="newCommentForm" ng-submit="$ctrl.postComment()">
<div ng-contenteditable contenteditable="true" class="message" ng-submit="$ctrl.postComment()" data-placeholder="{{ $ctrl.t('New comment …') }}" ng-model="$ctrl.$scope.newComment" ng-disabled="$ctrl.status.commentCreateLoading"></div>
<div ng-contenteditable contenteditable="true" class="message" ng-submit="$ctrl.postComment()" data-placeholder="{{ newCommentString }}" ng-model="$ctrl.$scope.newComment" ng-disabled="$ctrl.status.commentCreateLoading"></div>
<input class="submit icon-confirm has-tooltip" type="submit"
value="" title="" data-original-title="Post" ng-if="!$ctrl.status.commentCreateLoading">
<div class="submitLoading icon-loading-small" ng-if="$ctrl.status.commentCreateLoading"></div>
@@ -20,7 +20,7 @@
</div>
<span class="activitytime has-tooltip live-relative-timestamp"
data-timestamp="{{ activity.timestamp }}">{{ activity.timestamp/1000 | relativeDateFilter }}</span>
<div class="activitysubject" ng-if="!activity.commentModel" bind-html-compile="$ctrl.parseMessage(activity.subject_rich[0], activity.subject_rich[1])"></div>
<div class="activitysubject" ng-if="!activity.commentModel" bind-html-compile="$ctrl.parseMessage(activity)"></div>
<div class="activitysubject commentAuthor" ng-if="activity.commentModel">
{{ activity.subject_rich[1].user.name }}
<div class="app-popover-menu-utils">
+4 -4
View File
@@ -25,10 +25,10 @@
<?php p($l->t('Archive board')); ?>
</a>
</li>
<li ng-if="boardservice.canManage(b)" ng-click="boardDelete(b)">
<li ng-if="boardservice.canManage(b)">
<a class="icon-delete" title ="<?php p($l->t('Delete board')); ?>" ng-click="boardDelete(b)">
<?php p($l->t('Delete board')); ?>
</a>
<?php p($l->t('Delete board')); ?>
</a>
</li>
<li ui-sref="board.detail({boardId: b.id})">
<a class="icon-settings-dark">
@@ -52,7 +52,7 @@
</div>
</li>
<li ng-class="{editing: status.addBoard}">
<li ng-class="{editing: status.addBoard}" ng-if="canCreate">
<a ng-click="status.addBoard=!status.addBoard" class="icon-add app-navigation-noclose">
<?php p($l->t('Create a new board')); ?>
</a>
+17 -4
View File
@@ -1,8 +1,21 @@
<div id="app-settings">
<div id="app-settings" ng-if="isAdmin">
<div id="app-settings-header">
<button class="settings-button" data-apps-slide-toggle="#app-settings-content"></button>
<button class="settings-button" data-apps-slide-toggle="#app-settings-content"><?php p($l->t('Settings')); ?></button>
</div>
<div id="app-settings-content">
<div id="app-settings-content" class="hidden">
<ui-select multiple tagging="" ng-model="groupLimit" theme="select2"
title="<?php p($l->t('Limit deck to groups')); ?>"
placeholder="<?php p($l->t('Limit deck to groups')); ?>"
on-select="groupLimitAdd($item, $model)"
on-remove="groupLimitRemove($item, $model)" ng-disabled="groupLimitDisabled">
<ui-select-match placeholder="<?php p($l->t('Limit deck to groups')); ?>">
<span class="select-label">{{$item.displayname}}&nbsp;</span>
</ui-select-match>
<ui-select-choices
repeat="group in groups | filter: $select.search | limitTo: 3 track by group.id" position="down">
<span class="choose-label">{{group.displayname}}</span>
</ui-select-choices>
</ui-select>
<p class="hint"><?php p($l->t('Limiting Deck will block users not part of those groups from creating their own boards. Users will still be able to work on boards that have been shared with them.')); ?></p>
</div>
</div>