Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/nextcloud/tasks.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--appinfo/info.xml2
-rw-r--r--css/src/style.scss14
-rw-r--r--css/vendor/angularui/ui-select/select2.css601
-rw-r--r--js/app/app.js6
-rw-r--r--templates/main.php505
5 files changed, 262 insertions, 866 deletions
diff --git a/appinfo/info.xml b/appinfo/info.xml
index dd81b684..300f724b 100644
--- a/appinfo/info.xml
+++ b/appinfo/info.xml
@@ -22,6 +22,6 @@
<repository type="git">https://github.com/nextcloud/tasks.git</repository>
<dependencies>
<owncloud min-version="0" max-version="0"/>
- <nextcloud min-version="12" max-version="13"/>
+ <nextcloud min-version="14" max-version="14"/>
</dependencies>
</info>
diff --git a/css/src/style.scss b/css/src/style.scss
index 56f67dc7..59fad94e 100644
--- a/css/src/style.scss
+++ b/css/src/style.scss
@@ -316,7 +316,6 @@ $white: #fff;
}
#content {
- overflow: hidden;
color: $gray_dark;
}
@@ -327,7 +326,7 @@ $white: #fff;
margin: 12px 0;
position: relative;
border: 1px solid $gray_light;
- width: calc(100% - 54px);
+ width: calc(100% - 56px);
float: left;
height: 34px;
@@ -544,7 +543,6 @@ ol[dnd-list] {
font-weight: bold;
margin: -2px 4px 0;
padding: 2px 5px;
- min-height: 22px;
}
}
@@ -651,6 +649,9 @@ ol[dnd-list] {
.content-wrapper {
padding: 0;
+ box-sizing: border-box;
+ height: 100%;
+ overflow: hidden;
.notice {
color: $gray;
@@ -707,7 +708,7 @@ ol[dnd-list] {
display: inline-block;
min-height: 24px;
margin: 13px 0;
- width: calc(100% - 100px);
+ width: calc(100% - 115px);
padding: 0 6px;
line-height: 22px;
// this border is to adjust the size of the div to the size
@@ -727,12 +728,11 @@ ol[dnd-list] {
.expandable-container {
background: none repeat scroll 0 0 $white;
- box-sizing: border-box;
border: 1px solid $gray;
padding: 0 6px;
display: none !important;
margin: 13px 0;
- width: calc(100% - 100px);
+ width: calc(100% - 115px);
line-height: 24px;
min-height: 24px;
@@ -994,7 +994,7 @@ ol[dnd-list] {
background-color: $gray_easy;
box-shadow: none;
border-color: $gray_light;
- min-height: 22px;
+ padding: 3px 5px 3px 18px;
a.select2-search-choice-close {
opacity: .4;
diff --git a/css/vendor/angularui/ui-select/select2.css b/css/vendor/angularui/ui-select/select2.css
deleted file mode 100644
index 7ca021e4..00000000
--- a/css/vendor/angularui/ui-select/select2.css
+++ /dev/null
@@ -1,601 +0,0 @@
-/*
-Version: 3.4.5 Timestamp: Mon Nov 4 08:22:42 PST 2013
-*/
-.select2-container {
- margin: 0;
- position: relative;
- display: inline-block;
- /* inline-block for ie7 */
- zoom: 1;
- *display: inline;
- vertical-align: middle;
-}
-
-.select2-container,
-.select2-drop,
-.select2-search,
-.select2-search input {
- /*
- Force border-box so that % widths fit the parent
- container without overlap because of margin/padding.
-
- More Info : http://www.quirksmode.org/css/box.html
- */
- -webkit-box-sizing: border-box; /* webkit */
- -moz-box-sizing: border-box; /* firefox */
- box-sizing: border-box; /* css3 */
-}
-
-.select2-container .select2-choice {
- display: block;
- height: 26px;
- padding: 0 0 0 8px;
- overflow: hidden;
- position: relative;
-
- border: 1px solid #aaa;
- white-space: nowrap;
- line-height: 26px;
- color: #444;
- text-decoration: none;
-
- border-radius: 4px;
-
- background-clip: padding-box;
-
- -webkit-touch-callout: none;
- -webkit-user-select: none;
- -moz-user-select: none;
- -ms-user-select: none;
- user-select: none;
-
- background-color: #fff;
- background-image: -webkit-gradient(linear, left bottom, left top, color-stop(0, #eee), color-stop(0.5, #fff));
- background-image: -webkit-linear-gradient(center bottom, #eee 0%, #fff 50%);
- background-image: -moz-linear-gradient(center bottom, #eee 0%, #fff 50%);
- filter: progid:DXImageTransform.Microsoft.gradient(startColorstr = '#ffffff', endColorstr = '#eeeeee', GradientType = 0);
- background-image: linear-gradient(top, #fff 0%, #eee 50%);
-}
-
-.select2-container.select2-drop-above .select2-choice {
- border-bottom-color: #aaa;
-
- border-radius: 0 0 4px 4px;
-
- background-image: -webkit-gradient(linear, left bottom, left top, color-stop(0, #eee), color-stop(0.9, #fff));
- background-image: -webkit-linear-gradient(center bottom, #eee 0%, #fff 90%);
- background-image: -moz-linear-gradient(center bottom, #eee 0%, #fff 90%);
- filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffff', endColorstr='#eeeeee', GradientType=0);
- background-image: linear-gradient(top, #eee 0%, #fff 90%);
-}
-
-.select2-container.select2-allowclear .select2-choice .select2-chosen {
- margin-right: 42px;
-}
-
-.select2-container .select2-choice > .select2-chosen {
- margin-right: 26px;
- display: block;
- overflow: hidden;
-
- white-space: nowrap;
-
- text-overflow: ellipsis;
-}
-
-.select2-container .select2-choice abbr {
- display: none;
- width: 12px;
- height: 12px;
- position: absolute;
- right: 24px;
- top: 8px;
-
- font-size: 1px;
- text-decoration: none;
-
- border: 0;
- background: url('select2.png') right top no-repeat;
- cursor: pointer;
- outline: 0;
-}
-
-.select2-container.select2-allowclear .select2-choice abbr {
- display: inline-block;
-}
-
-.select2-container .select2-choice abbr:hover {
- background-position: right -11px;
- cursor: pointer;
-}
-
-.select2-drop-mask {
- border: 0;
- margin: 0;
- padding: 0;
- position: fixed;
- left: 0;
- top: 0;
- min-height: 100%;
- min-width: 100%;
- height: auto;
- width: auto;
- opacity: 0;
- z-index: 9998;
- /* styles required for IE to work */
- background-color: #fff;
- filter: alpha(opacity=0);
-}
-
-.select2-drop {
- width: 100%;
- margin-top: -1px;
- position: absolute;
- z-index: 9999;
- top: 100%;
-
- background: #fff;
- color: #000;
- border: 1px solid #aaa;
- border-top: 0;
-
- border-radius: 0 0 4px 4px;
-
- -webkit-box-shadow: 0 4px 5px rgba(0, 0, 0, .15);
- box-shadow: 0 4px 5px rgba(0, 0, 0, .15);
-}
-
-.select2-drop-auto-width {
- border-top: 1px solid #aaa;
- width: auto;
-}
-
-.select2-drop-auto-width .select2-search {
- padding-top: 4px;
-}
-
-.select2-drop.select2-drop-above {
- margin-top: 1px;
- border-top: 1px solid #aaa;
- border-bottom: 0;
-
- border-radius: 4px 4px 0 0;
-
- -webkit-box-shadow: 0 -4px 5px rgba(0, 0, 0, .15);
- box-shadow: 0 -4px 5px rgba(0, 0, 0, .15);
-}
-
-.select2-drop-active {
- border: 1px solid #5897fb;
- border-top: none;
-}
-
-.select2-drop.select2-drop-above.select2-drop-active {
- border-top: 1px solid #5897fb;
-}
-
-.select2-container .select2-choice .select2-arrow {
- display: inline-block;
- width: 18px;
- height: 100%;
- position: absolute;
- right: 0;
- top: 0;
-
- border-left: 1px solid #aaa;
- border-radius: 0 4px 4px 0;
-
- background-clip: padding-box;
-
- background: #ccc;
- background-image: -webkit-gradient(linear, left bottom, left top, color-stop(0, #ccc), color-stop(0.6, #eee));
- background-image: -webkit-linear-gradient(center bottom, #ccc 0%, #eee 60%);
- background-image: -moz-linear-gradient(center bottom, #ccc 0%, #eee 60%);
- filter: progid:DXImageTransform.Microsoft.gradient(startColorstr = '#eeeeee', endColorstr = '#cccccc', GradientType = 0);
- background-image: linear-gradient(top, #ccc 0%, #eee 60%);
-}
-
-.select2-container .select2-choice .select2-arrow b {
- display: block;
- width: 100%;
- height: 100%;
- background: url('select2.png') no-repeat 0 1px;
-}
-
-.select2-search {
- display: inline-block;
- width: 100%;
- min-height: 26px;
- margin: 0;
- padding-left: 4px;
- padding-right: 4px;
-
- position: relative;
- z-index: 10000;
-
- white-space: nowrap;
-}
-
-.select2-search input {
- width: 100%;
- height: auto !important;
- min-height: 26px;
- padding: 4px 20px 4px 5px;
- margin: 0;
-
- outline: 0;
- font-family: sans-serif;
- font-size: 1em;
-
- border: 1px solid #aaa;
- border-radius: 0;
-
- -webkit-box-shadow: none;
- box-shadow: none;
-
- background: #fff url('select2.png') no-repeat 100% -22px;
- background: url('select2.png') no-repeat 100% -22px, -webkit-gradient(linear, left bottom, left top, color-stop(0.85, #fff), color-stop(0.99, #eee));
- background: url('select2.png') no-repeat 100% -22px, -webkit-linear-gradient(center bottom, #fff 85%, #eee 99%);
- background: url('select2.png') no-repeat 100% -22px, -moz-linear-gradient(center bottom, #fff 85%, #eee 99%);
- background: url('select2.png') no-repeat 100% -22px, linear-gradient(top, #fff 85%, #eee 99%);
-}
-
-.select2-drop.select2-drop-above .select2-search input {
- margin-top: 4px;
-}
-
-.select2-search input.select2-active {
- background: #fff url('select2-spinner.gif') no-repeat 100%;
- background: url('select2-spinner.gif') no-repeat 100%, -webkit-gradient(linear, left bottom, left top, color-stop(0.85, #fff), color-stop(0.99, #eee));
- background: url('select2-spinner.gif') no-repeat 100%, -webkit-linear-gradient(center bottom, #fff 85%, #eee 99%);
- background: url('select2-spinner.gif') no-repeat 100%, -moz-linear-gradient(center bottom, #fff 85%, #eee 99%);
- background: url('select2-spinner.gif') no-repeat 100%, linear-gradient(top, #fff 85%, #eee 99%);
-}
-
-.select2-container-active .select2-choice,
-.select2-container-active .select2-choices {
- border: 1px solid #5897fb;
- outline: none;
-
- -webkit-box-shadow: 0 0 5px rgba(0, 0, 0, .3);
- box-shadow: 0 0 5px rgba(0, 0, 0, .3);
-}
-
-.select2-dropdown-open .select2-choice {
- border-bottom-color: transparent;
- -webkit-box-shadow: 0 1px 0 #fff inset;
- box-shadow: 0 1px 0 #fff inset;
-
- border-bottom-left-radius: 0;
- border-bottom-right-radius: 0;
-
- background-color: #eee;
- background-image: -webkit-gradient(linear, left bottom, left top, color-stop(0, #fff), color-stop(0.5, #eee));
- background-image: -webkit-linear-gradient(center bottom, #fff 0%, #eee 50%);
- background-image: -moz-linear-gradient(center bottom, #fff 0%, #eee 50%);
- filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#eeeeee', endColorstr='#ffffff', GradientType=0);
- background-image: linear-gradient(top, #fff 0%, #eee 50%);
-}
-
-.select2-dropdown-open.select2-drop-above .select2-choice,
-.select2-dropdown-open.select2-drop-above .select2-choices {
- border: 1px solid #5897fb;
- border-top-color: transparent;
-
- background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0, #fff), color-stop(0.5, #eee));
- background-image: -webkit-linear-gradient(center top, #fff 0%, #eee 50%);
- background-image: -moz-linear-gradient(center top, #fff 0%, #eee 50%);
- filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#eeeeee', endColorstr='#ffffff', GradientType=0);
- background-image: linear-gradient(bottom, #fff 0%, #eee 50%);
-}
-
-.select2-dropdown-open .select2-choice .select2-arrow {
- background: transparent;
- border-left: none;
- filter: none;
-}
-.select2-dropdown-open .select2-choice .select2-arrow b {
- background-position: -18px 1px;
-}
-
-/* results */
-.select2-results {
- max-height: 200px;
- padding: 0 0 0 4px;
- margin: 4px 4px 4px 0;
- position: relative;
- overflow-x: hidden;
- overflow-y: auto;
- -webkit-tap-highlight-color: rgba(0, 0, 0, 0);
-}
-
-.select2-results ul.select2-result-sub {
- margin: 0;
- padding-left: 0;
-}
-
-.select2-results ul.select2-result-sub > li .select2-result-label { padding-left: 20px }
-.select2-results ul.select2-result-sub ul.select2-result-sub > li .select2-result-label { padding-left: 40px }
-.select2-results ul.select2-result-sub ul.select2-result-sub ul.select2-result-sub > li .select2-result-label { padding-left: 60px }
-.select2-results ul.select2-result-sub ul.select2-result-sub ul.select2-result-sub ul.select2-result-sub > li .select2-result-label { padding-left: 80px }
-.select2-results ul.select2-result-sub ul.select2-result-sub ul.select2-result-sub ul.select2-result-sub ul.select2-result-sub > li .select2-result-label { padding-left: 100px }
-.select2-results ul.select2-result-sub ul.select2-result-sub ul.select2-result-sub ul.select2-result-sub ul.select2-result-sub ul.select2-result-sub > li .select2-result-label { padding-left: 110px }
-.select2-results ul.select2-result-sub ul.select2-result-sub ul.select2-result-sub ul.select2-result-sub ul.select2-result-sub ul.select2-result-sub ul.select2-result-sub > li .select2-result-label { padding-left: 120px }
-
-.select2-results li {
- list-style: none;
- display: list-item;
- background-image: none;
-}
-
-.select2-results li.select2-result-with-children > .select2-result-label {
- font-weight: bold;
-}
-
-.select2-results .select2-result-label {
- padding: 3px 7px 4px;
- margin: 0;
- cursor: pointer;
-
- min-height: 1em;
-
- -webkit-touch-callout: none;
- -webkit-user-select: none;
- -moz-user-select: none;
- -ms-user-select: none;
- user-select: none;
-}
-
-.select2-results .select2-highlighted {
- background: #3875d7;
- color: #fff;
-}
-
-.select2-results li em {
- background: #feffde;
- font-style: normal;
-}
-
-.select2-results .select2-highlighted em {
- background: transparent;
-}
-
-.select2-results .select2-highlighted ul {
- background: #fff;
- color: #000;
-}
-
-
-.select2-results .select2-no-results,
-.select2-results .select2-searching,
-.select2-results .select2-selection-limit {
- background: #f4f4f4;
- display: list-item;
-}
-
-/*
-disabled look for disabled choices in the results dropdown
-*/
-.select2-results .select2-disabled.select2-highlighted {
- color: #666;
- background: #f4f4f4;
- display: list-item;
- cursor: default;
-}
-.select2-results .select2-disabled {
- background: #f4f4f4;
- display: list-item;
- cursor: default;
-}
-
-.select2-results .select2-selected {
- display: none;
-}
-
-.select2-more-results.select2-active {
- background: #f4f4f4 url('select2-spinner.gif') no-repeat 100%;
-}
-
-.select2-more-results {
- background: #f4f4f4;
- display: list-item;
-}
-
-/* disabled styles */
-
-.select2-container.select2-container-disabled .select2-choice {
- background-color: #f4f4f4;
- background-image: none;
- border: 1px solid #ddd;
- cursor: default;
-}
-
-.select2-container.select2-container-disabled .select2-choice .select2-arrow {
- background-color: #f4f4f4;
- background-image: none;
- border-left: 0;
-}
-
-.select2-container.select2-container-disabled .select2-choice abbr {
- display: none;
-}
-
-
-/* multiselect */
-
-.select2-container-multi .select2-choices {
- height: auto !important;
- height: 1%;
- margin: 0;
- padding: 0;
- position: relative;
-
- /*border: 1px solid #aaa;*/
- cursor: text;
- overflow: hidden;
-
- background-color: #fff;
-/* background-image: -webkit-gradient(linear, 0% 0%, 0% 100%, color-stop(1%, #eee), color-stop(15%, #fff));
- background-image: -webkit-linear-gradient(top, #eee 1%, #fff 15%);
- background-image: -moz-linear-gradient(top, #eee 1%, #fff 15%);
- background-image: linear-gradient(top, #eee 1%, #fff 15%);*/
-}
-
-.select2-locked {
- padding: 3px 5px 3px 5px !important;
-}
-
-.select2-container-multi .select2-choices {
- min-height: 26px;
-}
-
-.select2-container-multi.select2-container-active .select2-choices {
- border: 1px solid #5897fb;
- outline: none;
-
- -webkit-box-shadow: 0 0 5px rgba(0, 0, 0, .3);
- box-shadow: 0 0 5px rgba(0, 0, 0, .3);
-}
-.select2-container-multi .select2-choices li {
- float: left;
- list-style: none;
-}
-.select2-container-multi .select2-choices .select2-search-field {
- margin: 0;
- padding: 0;
- white-space: nowrap;
-}
-
-.select2-container-multi .select2-choices .select2-search-field input {
- padding: 5px;
- margin: 1px 0;
-
- font-family: sans-serif;
- font-size: 100%;
- color: #666;
- outline: 0;
- border: 0;
- -webkit-box-shadow: none;
- box-shadow: none;
- background: transparent !important;
-}
-
-.select2-container-multi .select2-choices .select2-search-field input.select2-active {
- background: #fff url('select2-spinner.gif') no-repeat 100% !important;
-}
-
-.select2-default {
- color: #999 !important;
-}
-
-.select2-container-multi .select2-choices .select2-search-choice {
- padding: 3px 5px 3px 18px;
- margin: 3px 0 3px 5px;
- position: relative;
-
- line-height: 13px;
- color: #333;
- cursor: default;
- border: 1px solid #aaaaaa;
-
- border-radius: 3px;
-
- -webkit-box-shadow: 0 0 2px #fff inset, 0 1px 0 rgba(0, 0, 0, 0.05);
- box-shadow: 0 0 2px #fff inset, 0 1px 0 rgba(0, 0, 0, 0.05);
-
- background-clip: padding-box;
-
- -webkit-touch-callout: none;
- -webkit-user-select: none;
- -moz-user-select: none;
- -ms-user-select: none;
- user-select: none;
-
- background-color: #e4e4e4;
- filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#eeeeee', endColorstr='#f4f4f4', GradientType=0);
- background-image: -webkit-gradient(linear, 0% 0%, 0% 100%, color-stop(20%, #f4f4f4), color-stop(50%, #f0f0f0), color-stop(52%, #e8e8e8), color-stop(100%, #eee));
- background-image: -webkit-linear-gradient(top, #f4f4f4 20%, #f0f0f0 50%, #e8e8e8 52%, #eee 100%);
- background-image: -moz-linear-gradient(top, #f4f4f4 20%, #f0f0f0 50%, #e8e8e8 52%, #eee 100%);
- background-image: linear-gradient(top, #f4f4f4 20%, #f0f0f0 50%, #e8e8e8 52%, #eee 100%);
-}
-.select2-container-multi .select2-choices .select2-search-choice .select2-chosen {
- cursor: default;
-}
-.select2-container-multi .select2-choices .select2-search-choice-focus {
- background: #d4d4d4;
-}
-
-.select2-search-choice-close {
- display: block;
- width: 12px;
- height: 13px;
- position: absolute;
- right: 3px;
- top: 2px;
- font-size: 1px;
- outline: none;
-}
-
-.select2-container-multi .select2-search-choice-close {
- left: 1px;
-}
-
-.select2-container-multi .select2-choices .select2-search-choice .select2-search-choice-close:hover {
- background-position: right -11px;
-}
-.select2-container-multi .select2-choices .select2-search-choice-focus .select2-search-choice-close {
- background-position: right -11px;
-}
-
-/* disabled styles */
-.select2-container-multi.select2-container-disabled .select2-choices {
- background-color: #f4f4f4;
- background-image: none;
- border: 1px solid #ddd;
- cursor: default;
-}
-
-.select2-container-multi.select2-container-disabled .select2-choices .select2-search-choice {
- padding: 3px 5px 3px 5px;
- border: 1px solid #ddd;
- background-image: none;
- background-color: #f4f4f4;
-}
-
-.select2-container-multi.select2-container-disabled .select2-choices .select2-search-choice .select2-search-choice-close { display: none;
- background: none;
-}
-/* end multiselect */
-
-
-.select2-result-selectable .select2-match,
-.select2-result-unselectable .select2-match {
- text-decoration: underline;
-}
-
-.select2-offscreen, .select2-offscreen:focus {
- clip: rect(0 0 0 0) !important;
- width: 1px !important;
- height: 1px !important;
- border: 0 !important;
- margin: 0 !important;
- padding: 0 !important;
- overflow: hidden !important;
- position: absolute !important;
- outline: 0 !important;
- left: 0px !important;
- top: 0px !important;
-}
-
-.select2-display-none {
- display: none;
-}
-
-.select2-measure-scrollbar {
- position: absolute;
- top: -10000px;
- left: -10000px;
- width: 100px;
- height: 100px;
- overflow: scroll;
-}
diff --git a/js/app/app.js b/js/app/app.js
index d9cd3b1f..b5d793f0 100644
--- a/js/app/app.js
+++ b/js/app/app.js
@@ -19,6 +19,12 @@
*
*/
+$('#content.app-tasks').attr('ng-app', 'Tasks');
+$('#content.app-tasks').attr('ng-cloak');
+$('#content.app-tasks').attr('ng-controller', 'AppController');
+$('#content.app-tasks').attr('ng-click', 'closeAll($event)');
+$('#content.app-tasks').attr('class', 'handler');
+
angular.module('Tasks', ['ngRoute', 'ngAnimate', 'ui.select', 'ngSanitize', 'dndLists']).config([
'$provide', '$routeProvider', '$interpolateProvider', '$httpProvider',
function($provide, $routeProvider, $interpolateProvider, $httpProvider) {
diff --git a/templates/main.php b/templates/main.php
index eea0aae1..b116f7b6 100644
--- a/templates/main.php
+++ b/templates/main.php
@@ -1,283 +1,274 @@
<?php
script('tasks', 'merged');
style('tasks', 'style');
- style('tasks', 'vendor/angularui/ui-select/select2');
?>
-<div id="app"
- ng-app="Tasks"
- ng-cloak
- ng-controller="AppController"
- ng-click="closeAll($event)"
- class="handler"
- data-appVersion="<?php p($_['appVersion']); ?>">
- <div id="app-navigation" ng-controller="ListController">
- <ul id="collections">
- <li id="collection_{{ collection.id }}"
- class="collection {{ collection.icon }} reactive"
- collectionID="{{collection.id}}"
- ng-repeat="collection in collections"
- ng-class="{'animate-up': hideCollection(collection.id), active: collection.id==route.collectionID}"
- dnd-list="draggedTasks"
- dnd-drop="dropCollection(event, index, item)"
- dnd-dragover="dragoverCollection(event, index)">
- <a href="#/collections/{{ collection.id }}" class="sprite">
- <span class="date" ng-if="collection.id=='today'"><?php p($_['DOM']); ?></span>
- <span class="title">{{ collection.displayname }}</span>
- </a>
- <div class="app-navigation-entry-utils">
- <ul>
- <li class="app-navigation-entry-utils-counter">{{ getCollectionString(collection.id) | counterFormatter }}</li>
- </ul>
- </div>
- </li>
- <li id="list_{{ calendar.uri }}"
- class="list with-menu handler editing"
- calendarID="{{calendar.uri}}"
- ng-repeat="calendar in calendars"
- ng-class="{ active: calendar.uri==route.calendarID, edit:route.listparameter == 'name' && route.calendarID == calendar.uri,
- caldav: route.listparameter == 'caldav' && route.calendarID == calendar.uri}"
- dnd-list="draggedTasks"
- dnd-drop="dropList(event, index, item)"
- dnd-dragover="dragoverList(event, index)">
- <div class="app-navigation-entry-bullet" style="background-color: {{ calendar.color }};"></div>
- <a href="#/calendars/{{ calendar.uri }}" ng-dblclick="startRename(calendar)">
- <span class="title">{{ calendar.displayname }}</span>
- </a>
- <div class="app-navigation-entry-utils">
- <ul>
- <li class="app-navigation-entry-utils-counter">{{ getListCount(calendar.uri,'all') | counterFormatter }}</li>
- <li class="app-navigation-entry-utils-menu-button" ng-show="calendar.writable"><button></button></li>
- </ul>
- </div>
- <div class="app-navigation-entry-menu" ng-show="calendar.writable">
- <ul>
- <li>
- <a ng-click="startEdit(calendar)">
- <span class="icon-rename"></span>
- <span><?php p($l->t('Edit')); ?></span>
- </a>
- </li>
- <li>
- <a ng-click="showCalDAVUrl(calendar)">
- <span class="icon-public"></span>
- <span><?php p($l->t('Link')); ?></span>
- </a>
- </li>
- <li>
- <a href="{{calendar.exportUrl}}" download="{{calendar.uri}}.ics">
- <span class="icon-download"></span>
- <span><?php p($l->t('Download')); ?></span>
- </a>
- </li>
- <li confirmation="delete(calendar)" confirmation-message="deleteMessage(calendar)">
- </li>
- </ul>
- </div>
- <div class="app-navigation-entry-edit name" ng-class="{error: nameError}">
- <form>
- <input ng-model="calendar.displayname"
- class="edit hasTooltip"
- type="text"
- ng-keyup="checkEdit($event,calendar)"
- autofocus-on-insert>
- <input type="cancel"
- value=""
- class="action icon-close"
- ng-click="cancelEdit(calendar)"
- title="<?php p($l->t('Cancel')); ?>">
- <input type="submit"
- value=""
- class="action icon-checkmark"
- ng-click="saveEdit(calendar)"
- title="<?php p($l->t('Save')); ?>">
- </form>
- <colorpicker class="colorpicker"
- selected="calendar.color">
- </colorpicker>
- </div>
- <div class="app-navigation-entry-edit caldav">
- <form>
- <input class="caldav"
- ng-value="calendar.caldav"
- readonly
- type="text"/>
- <input type="cancel"
- value=""
- class="action icon-close"
- ng-click="hideCalDAVUrl()"
- title="<?php p($l->t('Cancel')); ?>">
- </form>
- </div>
- </li>
- <li class="newList handler icon-add reactive editing" ng-class="{edit: status.addingList}">
- <a class="addlist icon sprite"
- ng-click="startCreate()"
- oc-click-focus="{selector: '#newList', timeout: 0}">
- <span class="title"><?php p($l->t('Add List...')); ?></span>
- </a>
- <div class="app-navigation-entry-edit name" ng-class="{error: nameError}">
- <form ng-disabled="isAddingList">
- <input id="newList"
- ng-model="status.newListName"
- class="edit hasTooltip"
- type="text"
- autofocus-on-insert
- placeholder="<?php p($l->t('New List')); ?>"
- ng-keyup="checkNew($event,status.newListName)">
- <input type="cancel"
- value=""
- class="action icon-close"
- ng-click="cancelCreate()"
- title="<?php p($l->t('Cancel')); ?>">
- <input type="submit"
- value=""
- class="action icon-checkmark"
- ng-click="create($event)"
- title="<?php p($l->t('Save')); ?>">
- </form>
- <colorpicker class="colorpicker" selected="color"></colorpicker>
- </div>
- </li>
- </ul>
- <div id="app-settings" ng-controller="SettingsController">
- <div id="app-settings-header">
- <button class="settings-button" data-apps-slide-toggle="#app-settings-content">
- <span><?php p($l->t('Settings')); ?></span>
- </button>
- </div>
- <div id="app-settings-content">
+<div id="app-navigation" ng-controller="ListController">
+ <ul id="collections">
+ <li id="collection_{{ collection.id }}"
+ class="collection {{ collection.icon }} reactive"
+ collectionID="{{collection.id}}"
+ ng-repeat="collection in collections"
+ ng-class="{'animate-up': hideCollection(collection.id), active: collection.id==route.collectionID}"
+ dnd-list="draggedTasks"
+ dnd-drop="dropCollection(event, index, item)"
+ dnd-dragover="dragoverCollection(event, index)">
+ <a href="#/collections/{{ collection.id }}" class="sprite">
+ <span class="date" ng-if="collection.id=='today'"><?php p($_['DOM']); ?></span>
+ <span class="title">{{ collection.displayname }}</span>
+ </a>
+ <div class="app-navigation-entry-utils">
<ul>
- <li>
- <label for="startOfWeek"><?php p($l->t('Start of week')); ?></label>
- <select id="startOfWeek"
- ng-change="setStartOfWeek()"
- ng-model="settingsmodel.getById('various').startOfWeek"
- ng-options="startOfWeekOption.id as startOfWeekOption.name for startOfWeekOption in startOfWeekOptions">
- </select>
- </li>
- <li class="headline">
- <?php p($l->t('Visibility of Smart Collections')); ?>
- </li>
- <li ng-repeat="collection in collections">
- <div class="label-container">
- <span class="icon {{ collection.icon }}">
- <text ng-show="collection.id=='today'"><?php p($_['DOM']); ?></text>
- </span>
- <label for="visibilityCollection-{{collection.id}}" class="title">{{ collection.displayname }}</label>
- </div>
- <select id="visibilityCollection-{{collection.id}}"
- ng-change="setVisibility(collection.id)"
- ng-model="collection.show"
- ng-options="collectionOption.id as collectionOption.name for collectionOption in collectionOptions">
- </select>
- </li>
+ <li class="app-navigation-entry-utils-counter">{{ getCollectionString(collection.id) | counterFormatter }}</li>
</ul>
</div>
- </div>
- </div>
-
- <div id="app-content"
- ng-controller="TasksController"
- ng-class="{'with-app-sidebar':route.taskID}">
- <div class="content-wrapper">
- <div id="add-task"
- class="add-task handler"
- ng-show="showInput()"
- ng-class="{'focus':status.focusTaskInput}">
- <form ng-submit="addTask(status.taskName)" name="addTaskForm">
- <input id="target"
- ng-disabled="isAddingTask"
- ng-click="focusTaskInput()"
- class="transparent"
- placeholder="{{ getAddString() }}"
- ng-model="status.taskName"
- ng-keydown="checkTaskInput($event)"/>
- </form>
- </div>
+ </li>
+ <li id="list_{{ calendar.uri }}"
+ class="list with-menu handler editing"
+ calendarID="{{calendar.uri}}"
+ ng-repeat="calendar in calendars"
+ ng-class="{ active: calendar.uri==route.calendarID, edit:route.listparameter == 'name' && route.calendarID == calendar.uri,
+ caldav: route.listparameter == 'caldav' && route.calendarID == calendar.uri}"
+ dnd-list="draggedTasks"
+ dnd-drop="dropList(event, index, item)"
+ dnd-dragover="dragoverList(event, index)">
+ <div class="app-navigation-entry-bullet" style="background-color: {{ calendar.color }};"></div>
+ <a href="#/calendars/{{ calendar.uri }}" ng-dblclick="startRename(calendar)">
+ <span class="title">{{ calendar.displayname }}</span>
+ </a>
<div class="app-navigation-entry-utils">
- <div class="app-navigation-entry-utils-menu-button" title="<?php p($l->t('Change sort order')); ?>">
- <button class="sortorder-dropdown-button">
- <span class="icon" ng-class="getSortOrderIcon()"></span>
- <span class="icon sort-indicator" ng-class="{'icon-sort-up': settingsmodel.getById('various').sortDirection, 'icon-sort-down': !settingsmodel.getById('various').sortDirection}"></span>
- </button>
- </div>
+ <ul>
+ <li class="app-navigation-entry-utils-counter">{{ getListCount(calendar.uri,'all') | counterFormatter }}</li>
+ <li class="app-navigation-entry-utils-menu-button" ng-show="calendar.writable"><button></button></li>
+ </ul>
</div>
- <div class="app-navigation-entry-menu bubble sortorder-dropdown">
+ <div class="app-navigation-entry-menu" ng-show="calendar.writable">
<ul>
- <li ng-click="setSortOrder($event, 'default')" ng-class="{active: settingsmodel.getById('various').sortOrder == 'default'}" class="handler">
- <a>
- <span class="icon icon-menu"></span>
- <span class="label"><?php p($l->t('Default')); ?></span>
- <span class="icon sort-indicator" ng-class="{'icon-sort-up': settingsmodel.getById('various').sortDirection, 'icon-sort-down': !settingsmodel.getById('various').sortDirection}"></span>
- </a>
- </li>
- <li ng-click="setSortOrder($event, 'due')" ng-class="{active: settingsmodel.getById('various').sortOrder == 'due'}">
- <a>
- <span class="icon icon-calendar"></span>
- <span class="label"><?php p($l->t('Due date')); ?></span>
- <span class="icon sort-indicator" ng-class="{'icon-sort-up': settingsmodel.getById('various').sortDirection, 'icon-sort-down': !settingsmodel.getById('various').sortDirection}"></span>
+ <li>
+ <a ng-click="startEdit(calendar)">
+ <span class="icon-rename"></span>
+ <span><?php p($l->t('Edit')); ?></span>
</a>
</li>
- <li ng-click="setSortOrder($event, 'start')" ng-class="{active: settingsmodel.getById('various').sortOrder == 'start'}">
- <a>
- <span class="icon icon-calendar"></span>
- <span class="label"><?php p($l->t('Start date')); ?></span>
- <span class="icon sort-indicator" ng-class="{'icon-sort-up': settingsmodel.getById('various').sortDirection, 'icon-sort-down': !settingsmodel.getById('various').sortDirection}"></span>
+ <li>
+ <a ng-click="showCalDAVUrl(calendar)">
+ <span class="icon-public"></span>
+ <span><?php p($l->t('Link')); ?></span>
</a>
</li>
- <li ng-click="setSortOrder($event, 'priority')" ng-class="{active: settingsmodel.getById('various').sortOrder == 'priority'}">
- <a>
- <span class="icon icon-task-star"></span>
- <span class="label"><?php p($l->t('Priority')); ?></span>
- <span class="icon sort-indicator" ng-class="{'icon-sort-up': settingsmodel.getById('various').sortDirection, 'icon-sort-down': !settingsmodel.getById('various').sortDirection}"></span>
+ <li>
+ <a href="{{calendar.exportUrl}}" download="{{calendar.uri}}.ics">
+ <span class="icon-download"></span>
+ <span><?php p($l->t('Download')); ?></span>
</a>
</li>
- <li ng-click="setSortOrder($event, 'alphabetically')" ng-class="{active: settingsmodel.getById('various').sortOrder == 'alphabetically'}">
- <a>
- <span class="icon icon-alphabetically"></span>
- <span class="label"><?php p($l->t('Alphabetically')); ?></span>
- <span class="icon sort-indicator" ng-class="{'icon-sort-up': settingsmodel.getById('various').sortDirection, 'icon-sort-down': !settingsmodel.getById('various').sortDirection}"></span>
- </a>
+ <li confirmation="delete(calendar)" confirmation-message="deleteMessage(calendar)">
</li>
-<!-- <li ng-click="setSortOrder($event, 'manual')" ng-class="{active: settingsmodel.getById('various').sortOrder == 'manual'}">
- <a>
- <span class="icon icon-manual"></span>
- <span class="label"><?php p($l->t('Manually')); ?></span>
- <span class="icon sort-indicator" ng-class="{'icon-sort-up': settingsmodel.getById('various').sortDirection, 'icon-sort-down': !settingsmodel.getById('various').sortDirection}"></span>
- </a>
- </li> -->
</ul>
</div>
- <div class="task-list">
- <?php print_unescaped($this->inc('part.tasklist')); ?>
- <?php print_unescaped($this->inc('part.collectionall')); ?>
- <?php print_unescaped($this->inc('part.collectionweek')); ?>
- <div id="searchresults"></div>
- <div class="task-item template">
- <div class="task-body">
- <div class="percentdone"></div>
- <a class="task-checkbox" name="toggleCompleted" ng-click="toggleCompleted()">
- <span class="icon task-checkbox"></span>
- </a>
- <a class="icon task-separator"></a>
- <a class="task-star" ng-click="toggleStarred(task.id)">
- <span class="icon task-star faded"></span>
- </a>
- <a class="duedate" ng-class="{overdue: TasksModel.overdue(task.due)}">{{ task.due | dateTaskList }}</a>
- <div class="title-wrapper">
- <span class="title"></span>
- <span class="icon task-attachment"></span>
- </div>
+ <div class="app-navigation-entry-edit name" ng-class="{error: nameError}">
+ <form>
+ <input ng-model="calendar.displayname"
+ class="edit hasTooltip"
+ type="text"
+ ng-keyup="checkEdit($event,calendar)"
+ autofocus-on-insert>
+ <input type="cancel"
+ value=""
+ class="action icon-close"
+ ng-click="cancelEdit(calendar)"
+ title="<?php p($l->t('Cancel')); ?>">
+ <input type="submit"
+ value=""
+ class="action icon-checkmark"
+ ng-click="saveEdit(calendar)"
+ title="<?php p($l->t('Save')); ?>">
+ </form>
+ <colorpicker class="colorpicker"
+ selected="calendar.color">
+ </colorpicker>
+ </div>
+ <div class="app-navigation-entry-edit caldav">
+ <form>
+ <input class="caldav"
+ ng-value="calendar.caldav"
+ readonly
+ type="text"/>
+ <input type="cancel"
+ value=""
+ class="action icon-close"
+ ng-click="hideCalDAVUrl()"
+ title="<?php p($l->t('Cancel')); ?>">
+ </form>
+ </div>
+ </li>
+ <li class="newList handler icon-add reactive editing" ng-class="{edit: status.addingList}">
+ <a class="addlist icon sprite"
+ ng-click="startCreate()"
+ oc-click-focus="{selector: '#newList', timeout: 0}">
+ <span class="title"><?php p($l->t('Add List...')); ?></span>
+ </a>
+ <div class="app-navigation-entry-edit name" ng-class="{error: nameError}">
+ <form ng-disabled="isAddingList">
+ <input id="newList"
+ ng-model="status.newListName"
+ class="edit hasTooltip"
+ type="text"
+ autofocus-on-insert
+ placeholder="<?php p($l->t('New List')); ?>"
+ ng-keyup="checkNew($event,status.newListName)">
+ <input type="cancel"
+ value=""
+ class="action icon-close"
+ ng-click="cancelCreate()"
+ title="<?php p($l->t('Cancel')); ?>">
+ <input type="submit"
+ value=""
+ class="action icon-checkmark"
+ ng-click="create($event)"
+ title="<?php p($l->t('Save')); ?>">
+ </form>
+ <colorpicker class="colorpicker" selected="color"></colorpicker>
+ </div>
+ </li>
+ </ul>
+ <div id="app-settings" ng-controller="SettingsController">
+ <div id="app-settings-header">
+ <button class="settings-button" data-apps-slide-toggle="#app-settings-content">
+ <span><?php p($l->t('Settings')); ?></span>
+ </button>
+ </div>
+ <div id="app-settings-content">
+ <ul>
+ <li>
+ <label for="startOfWeek"><?php p($l->t('Start of week')); ?></label>
+ <select id="startOfWeek"
+ ng-change="setStartOfWeek()"
+ ng-model="settingsmodel.getById('various').startOfWeek"
+ ng-options="startOfWeekOption.id as startOfWeekOption.name for startOfWeekOption in startOfWeekOptions">
+ </select>
+ </li>
+ <li class="headline">
+ <?php p($l->t('Visibility of Smart Collections')); ?>
+ </li>
+ <li ng-repeat="collection in collections">
+ <div class="label-container">
+ <span class="icon {{ collection.icon }}">
+ <text ng-show="collection.id=='today'"><?php p($_['DOM']); ?></text>
+ </span>
+ <label for="visibilityCollection-{{collection.id}}" class="title">{{ collection.displayname }}</label>
</div>
- </div>
+ <select id="visibilityCollection-{{collection.id}}"
+ ng-change="setVisibility(collection.id)"
+ ng-model="collection.show"
+ ng-options="collectionOption.id as collectionOption.name for collectionOption in collectionOptions">
+ </select>
+ </li>
+ </ul>
+ </div>
+ </div>
+</div>
+
+<div id="app-content"
+ ng-controller="TasksController"
+ ng-class="{'with-app-sidebar':route.taskID}">
+ <div class="content-wrapper">
+ <div id="add-task"
+ class="add-task handler"
+ ng-show="showInput()"
+ ng-class="{'focus':status.focusTaskInput}">
+ <form ng-submit="addTask(status.taskName)" name="addTaskForm">
+ <input id="target"
+ ng-disabled="isAddingTask"
+ ng-click="focusTaskInput()"
+ class="transparent"
+ placeholder="{{ getAddString() }}"
+ ng-model="status.taskName"
+ ng-keydown="checkTaskInput($event)"/>
+ </form>
+ </div>
+ <div class="app-navigation-entry-utils">
+ <div class="app-navigation-entry-utils-menu-button" title="<?php p($l->t('Change sort order')); ?>">
+ <button class="sortorder-dropdown-button">
+ <span class="icon" ng-class="getSortOrderIcon()"></span>
+ <span class="icon sort-indicator" ng-class="{'icon-sort-up': settingsmodel.getById('various').sortDirection, 'icon-sort-down': !settingsmodel.getById('various').sortDirection}"></span>
+ </button>
</div>
</div>
- <div id="app-sidebar" ng-class="{'disappear':!route.taskID}">
- <?php print_unescaped($this->inc('part.details')); ?>
+ <div class="app-navigation-entry-menu bubble sortorder-dropdown">
+ <ul>
+ <li ng-click="setSortOrder($event, 'default')" ng-class="{active: settingsmodel.getById('various').sortOrder == 'default'}" class="handler">
+ <a>
+ <span class="icon icon-menu"></span>
+ <span class="label"><?php p($l->t('Default')); ?></span>
+ <span class="icon sort-indicator" ng-class="{'icon-sort-up': settingsmodel.getById('various').sortDirection, 'icon-sort-down': !settingsmodel.getById('various').sortDirection}"></span>
+ </a>
+ </li>
+ <li ng-click="setSortOrder($event, 'due')" ng-class="{active: settingsmodel.getById('various').sortOrder == 'due'}">
+ <a>
+ <span class="icon icon-calendar"></span>
+ <span class="label"><?php p($l->t('Due date')); ?></span>
+ <span class="icon sort-indicator" ng-class="{'icon-sort-up': settingsmodel.getById('various').sortDirection, 'icon-sort-down': !settingsmodel.getById('various').sortDirection}"></span>
+ </a>
+ </li>
+ <li ng-click="setSortOrder($event, 'start')" ng-class="{active: settingsmodel.getById('various').sortOrder == 'start'}">
+ <a>
+ <span class="icon icon-calendar"></span>
+ <span class="label"><?php p($l->t('Start date')); ?></span>
+ <span class="icon sort-indicator" ng-class="{'icon-sort-up': settingsmodel.getById('various').sortDirection, 'icon-sort-down': !settingsmodel.getById('various').sortDirection}"></span>
+ </a>
+ </li>
+ <li ng-click="setSortOrder($event, 'priority')" ng-class="{active: settingsmodel.getById('various').sortOrder == 'priority'}">
+ <a>
+ <span class="icon icon-task-star"></span>
+ <span class="label"><?php p($l->t('Priority')); ?></span>
+ <span class="icon sort-indicator" ng-class="{'icon-sort-up': settingsmodel.getById('various').sortDirection, 'icon-sort-down': !settingsmodel.getById('various').sortDirection}"></span>
+ </a>
+ </li>
+ <li ng-click="setSortOrder($event, 'alphabetically')" ng-class="{active: settingsmodel.getById('various').sortOrder == 'alphabetically'}">
+ <a>
+ <span class="icon icon-alphabetically"></span>
+ <span class="label"><?php p($l->t('Alphabetically')); ?></span>
+ <span class="icon sort-indicator" ng-class="{'icon-sort-up': settingsmodel.getById('various').sortDirection, 'icon-sort-down': !settingsmodel.getById('various').sortDirection}"></span>
+ </a>
+ </li>
+<!-- <li ng-click="setSortOrder($event, 'manual')" ng-class="{active: settingsmodel.getById('various').sortOrder == 'manual'}">
+ <a>
+ <span class="icon icon-manual"></span>
+ <span class="label"><?php p($l->t('Manually')); ?></span>
+ <span class="icon sort-indicator" ng-class="{'icon-sort-up': settingsmodel.getById('various').sortDirection, 'icon-sort-down': !settingsmodel.getById('various').sortDirection}"></span>
+ </a>
+ </li> -->
+ </ul>
+ </div>
+ <div class="task-list">
+ <?php print_unescaped($this->inc('part.tasklist')); ?>
+ <?php print_unescaped($this->inc('part.collectionall')); ?>
+ <?php print_unescaped($this->inc('part.collectionweek')); ?>
+ <div id="searchresults"></div>
+ <div class="task-item template">
+ <div class="task-body">
+ <div class="percentdone"></div>
+ <a class="task-checkbox" name="toggleCompleted" ng-click="toggleCompleted()">
+ <span class="icon task-checkbox"></span>
+ </a>
+ <a class="icon task-separator"></a>
+ <a class="task-star" ng-click="toggleStarred(task.id)">
+ <span class="icon task-star faded"></span>
+ </a>
+ <a class="duedate" ng-class="{overdue: TasksModel.overdue(task.due)}">{{ task.due | dateTaskList }}</a>
+ <div class="title-wrapper">
+ <span class="title"></span>
+ <span class="icon task-attachment"></span>
+ </div>
+ </div>
+ </div>
</div>
</div>
- <script type="text/ng-template" id="part.taskbody">
- <?php print_unescaped($this->inc('part.taskbody')); ?>
- </script>
</div>
+<div id="app-sidebar" ng-class="{'disappear':!route.taskID}">
+ <?php print_unescaped($this->inc('part.details')); ?>
+</div>
+<script type="text/ng-template" id="part.taskbody">
+ <?php print_unescaped($this->inc('part.taskbody')); ?>
+</script>