Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Browse files

Merge

  • Loading branch information...
commit 3374ffaf709a4d0a8e964f7ad2186c307e8a0f8e 1 parent 013412b
@elmarbransch authored
View
2  apps/account/modules/main/templates/indexSuccess.php
@@ -521,7 +521,7 @@
<div class="taskOptions noPrint">
<table><tbody>
- <tr>
+ <tr style="display:none;">
<td class="taskOptionName lang lang_ACCOUNT_MAIN_CONTENT_TICK_IF_HEADER"></td>
<td>
<select name="taskOptionHeader" class="taskOptionHeader">
View
BIN  web/app/common/img/empty_star_micro.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
View
BIN  web/app/common/img/gmail_icon.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
View
BIN  web/app/common/img/note_icon.png 100755 → 100644
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
View
BIN  web/app/common/img/repetition_icon.gif
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
View
BIN  ...op/img/minkenberg/left-standart-hover.png → web/app/common/img/repetition_icon.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
View
840 web/app/common/js/plancake.tasks.common.js
@@ -1,421 +1,421 @@
-/*************************************************************************************
-* ===================================================================================*
-* Software by: Danyuki Software Limited *
-* This file is part of Plancake. *
-* *
-* Copyright 2009-2010-2011-2012 by: Danyuki Software Limited *
-* Support, News, Updates at: http://www.plancake.com *
-* Licensed under the AGPL version 3 license. * *
-* Danyuki Software Limited is registered in England and Wales (Company No. 07554549) *
-**************************************************************************************
-* Plancake is distributed in the hope that it will be useful, *
-* but WITHOUT ANY WARRANTY; without even the implied warranty of *
-* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
-* GNU Affero General Public License for more details. *
-* *
-* You should have received a copy of the GNU Affero General Public License *
-* along with this program. If not, see <http://www.gnu.org/licenses/>. *
-* *
-**************************************************************************************/
-var PLANCAKE = PLANCAKE || {};
-
-$(document).ready( function() {
-
-});
-
-/**
- * @param JQuery noteIcon
- * @param JQueryEvent e
- **/
-PLANCAKE.toggleNote = function (noteIcon, e) {
- noteIcon.parents('li.task').find('.taskNote').toggle();
- e.stopPropagation();
-}
-
-/**
- * @param PLANCAKE.Task task
- * @param JQuery _activePanel (=null)
- * @return JQuery - li element
- */
-PLANCAKE.getHtmlTaskObj = function(task, _activePanel) {
- var activePanel = _activePanel ? _activePanel : PLANCAKE.activePanel;
- var taskDescription = '',
- tagIds = null,
- tagsCounter = null,
- i = 0,
- tags = [],
- tagsString = '',
- displayInList = false,
- repetitionHtml = '';
-
- if (task.repetitionId) {
- repetitionHtml = '<span class="taskRepetitionString">' + PLANCAKE.formatRepetitionForUser(task) + '</span>' +
- '<img src="/app/common/img/repetition_icon.gif" class="taskRepetition" title="' + PLANCAKE.formatRepetitionForUser(task) + '" />';
-
- if (! PLANCAKE.isMobile) {
- // repetitionHtml += '&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;';
- }
-
- }
-
- var taskScheduleDetails = '<div style="text-align: right" class="notForHeader taskScheduleDetails">' +
- ( PLANCAKE.isMobile ? '' : repetitionHtml) + // for the mobile version, we want to insert the repetitionHTML in another div
- ( ((task.dueTime !== null) && task.dueTime.toString().length) ? '<span class="taskDueTime">@' + PLANCAKE.formatTimeForUser(task.dueTime) + '</span>' : '') +
- ( ((task.dueDate !== null) && task.dueDate.length) ? '<span class="taskDueDate">' + task.getHumanFriendlyDueDate() + '</span>' : '') +
- '</div>';
-
- if (PLANCAKE.isMobile) {
- taskScheduleDetails += '<div class="repetitionInfoForMobile">' + repetitionHtml + '</div>';
- }
-
-
- var descrWrapper = '<div class="descrWrapper">' +
- '<span class="description">' + PLANCAKE.linkify(PLANCAKE.encodeEntities(task.description)) + '</span>' +
- '</div>' +
-
- '<div class="taskNote notForHeader">' + ( (task.note && task.note.length) ? PLANCAKE.linkify(PLANCAKE.nl2br(htmlspecialchars(task.note))) : '' ) + '</div>';
-
-
- var taskHtml = $("<li class='task_" + task.id + " fromPanel_" + activePanel.attr('id') + " task'>" +
- '<span class="simpleTimestamp hidden">' + task.getSimpleTimestamp() + '</span>' +
- '<div class="notForHeader doneWrapper"><input type="checkbox" name="markAsCompleted" class="markAsCompleted" />&nbsp;</div>' +
- '<div class="notForHeader starWrapper"><img class="star" src="/app/common/img/empty_star_micro.png" />&nbsp;</div>' +
-
- (PLANCAKE.isMobile ? (descrWrapper + '<div class="descriptionAnchor"></div>') : taskScheduleDetails) +
- (PLANCAKE.isMobile ? taskScheduleDetails : descrWrapper) +
-
- '<a href="#" class="editTask taskAction">' + PLANCAKE.lang.ACCOUNT_MISC_EDIT + '</a>' +
- '<a href="#" class="addBelowTask taskAction">' + PLANCAKE.lang.ACCOUNT_MISC_ADD_BELOW + '</a>' +
-
- "</li>");
-
- taskDescription = taskHtml.find('.description');
- taskDescriptionAnchor = taskHtml.find('.descriptionAnchor');
-
- if (task.isHeader) {
- taskHtml.addClass('header');
- taskHtml.find('.notForHeader').hide();
- } else {
- taskHtml.find('.descrWrapper').addClass('leftIndent');
- }
-
- if (task.isStarred) {
- taskHtml.plancake().star(true);
- }
-
- if ( (PLANCAKE.getActivePanelContentConfig(activePanel).type !== PLANCAKE.CONTENT_TYPE_LIST) &&
- (! task.isHeader) ) {
- displayInList = true;
- }
- if ( (PLANCAKE.getActivePanelContentConfig().type === PLANCAKE.CONTENT_TYPE_LIST) &&
- (parseInt(PLANCAKE.getActivePanelContentConfig().extraParam) !== task.listId) ) {
- displayInList = true;
- }
- if (displayInList) {
- var listLinkInList = (PLANCAKE.isMobile) ? '<a href="#tasks-screen?type=list&id=' + task.listId + '">' :
- '<a class="listLinkInList llil_' + task.listId + '" href=".#">';
-
- var inList = '<span class="inList">&nbsp;| ' + PLANCAKE.lang.ACCOUNT_MISC_IN_LIST + ' ' + listLinkInList +
- $().plancake().getList(task.listId).plancake().getName() + '</a></span>';
-
- if (PLANCAKE.isMobile) {
- taskDescriptionAnchor.append(inList);
- } else {
- taskDescription.after(inList);
- }
- }
-
- if((task.note && task.note.length)) {
- taskDescription.after('&nbsp;&nbsp;<img class="taskNoteIcon" title="' + PLANCAKE.lang.ACCOUNT_HINT_CLICK_TO_SEE_NOTE + '" alt="' + PLANCAKE.lang.ACCOUNT_HINT_CLICK_TO_SEE_NOTE + '" src="/app/common/img/note_icon.png" />');
- }
-
- if (!PLANCAKE.isMobile) { // we don't do it on mobike in order not to increase loading time and also because it is not really needed
- if((task.description + task.note).indexOf('mail.google.com/mail') >= 0) {
- var gmailRegExp = /http(s)?:\/\/mail.google.com\/mail[^ ]+/;
- try {
- var gmailUrl = (task.description + ' ' + task.note).replace(/(\n|\t)/, ' ').match(gmailRegExp)[0];
- taskDescription.after('&nbsp;&nbsp;<a target="_blank" href="' + gmailUrl + '"><img style="border: 0px" class="taskGmailIcon" title="' + PLANCAKE.lang.ACCOUNT_HINT_CLICK_TO_SEE_GMAIL + '" alt="' + PLANCAKE.lang.ACCOUNT_HINT_CLICK_TO_SEE_GMAIL + '" src="/app/common/img/gmail_icon.png" /></a>');
- if (task.note.trim().length === gmailUrl.length) { // the note contains only the link to GMail that we show via the Gmail icon, therefore
- taskHtml.find('.taskNoteIcon').remove(); // no need to show note icon
- }
- } catch (e) {
- // nothing serious - just the match() call failed - no valid gmail link
- }
- }
- }
-
- if(task.tagIds) {
- tagIds = task.tagIds.split(',');
- tagsCounter = tagIds.length;
- var tagLink = '';
-
- for(i = 0; i < tagsCounter; i++) {
- tagLink = (PLANCAKE.isMobile) ? '<a href="#tasks-screen&type=tag&id=' + tagIds[i] + '">' :
- '<a class="tagLinkInList tlil_' + tagIds[i] + '" href=".#">';
- tags.push( tagLink +
- $().plancake().getTag(tagIds[i]).plancake().getName() + '</a>');
- }
- tagsString = '&nbsp;<span class="taskTags">';
- tagsString += tags.join(', ');
- tagsString += '</span>';
-
- if (PLANCAKE.isMobile) {
- taskDescriptionAnchor.prepend(tagsString);
- } else {
- taskDescription.after(tagsString);
- }
- }
-
- if (task.isFromSystem) {
- // taskDescription.before('<img title="message from the team" src="/app/desktop/img/fire_icon_small.png" />');
- }
-
- if ( (PLANCAKE.getActivePanelContentConfig(activePanel).type !== PLANCAKE.CONTENT_TYPE_LIST) ) {
- taskHtml.find('.addBelowTask').remove();
- }
-
- if (PLANCAKE.getActivePanelContentConfig(activePanel).type !== PLANCAKE.CONTENT_TYPE_CALENDAR) {
- if (task.isOverdue()) {
- taskHtml.addClass('overdue');
- } else if (task.isDueToday()) {
- taskHtml.addClass('dueToday');
- } else if (task.isDueTomorrow()) {
- taskHtml.addClass('dueTomorrow');
- } else {
- taskHtml.removeClass('overdue today tomorrow');
- }
- } else {
- taskHtml.find('.taskDueDate').hide();
- }
-
- if ((task.dueDate !== null) && task.dueDate.length) {
- taskHtml.addClass('scheduled');
- }
-
- if ( (PLANCAKE.getActivePanelContentConfig(activePanel).type === PLANCAKE.CONTENT_TYPE_CALENDAR) &&
- (task.extra) ) {
- taskHtml.addClass('dow_' + task.extra.toLowerCase());
- }
-
- taskHtml.data(PLANCAKE.JQUERY_TASK_DATA_KEY, task);
-
- if (! PLANCAKE.isTaskToBeShownInActiveContent(task, PLANCAKE.getActivePanelContentConfig(activePanel))) {
- PLANCAKE.hideTaskInCurrentContent(taskHtml);
- }
-
- if (PLANCAKE.getActivePanelContentConfig(activePanel).type === PLANCAKE.CONTENT_TYPE_LIST) {
- // tasks need to have an id to serialize when we reorder them
- taskHtml.attr('id', 'task_' + activePanel.attr('id') + '_' + task.id);
- }
-
- if (task.isCompleted) {
- taskHtml.addClass('completed');
- }
-
- if (task.hasLocalModifications) {
- taskHtml.addClass('hasLocalModifications');
- }
-
- if (task.isLocal) {
- taskHtml.addClass('isLocal');
- }
-
- return taskHtml;
-}
-
-
-/**
- * @param Plancake.Task task
- * @param JQuery activeContent
- * @return boolean
- */
-PLANCAKE.isTaskToBeShownInActiveContent = function(task, activeContent) {
- var toBeShown = true;
-
- if ( (activeContent.type === PLANCAKE.CONTENT_TYPE_LIST) && (activeContent.extraParam != task.listId) ) {
- toBeShown = false;
- } else if ( (activeContent.type === PLANCAKE.CONTENT_TYPE_TAG) && (!task.hasTag(activeContent.extraParam)) ) {
- toBeShown = false;
- } else if ( (activeContent.type === PLANCAKE.CONTENT_TYPE_STARRED) && (!task.isStarred) ) {
- toBeShown = false;
- } else if ( (activeContent.type === PLANCAKE.CONTENT_TYPE_TODAY) && (!task.getQuickDateLabel()) ) {
- toBeShown = false;
- } else if ( (activeContent.type === PLANCAKE.CONTENT_TYPE_CALENDAR) && (!task.dueDate) ) {
- toBeShown = false;
- }
-
- return toBeShown;
-}
-
-
-/**
- * see PLANCAKE.showHiddenTaskInCurrentContent
- *
- * @param JQuery - li element
- */
-PLANCAKE.hideTaskInCurrentContent = function (taskHtml) {
- taskHtml.fadeTo('fast', 0.4);
-}
-
-/**
- * see PLANCAKE.hideTaskInCurrentContent
- *
- * @param JQuery - li element
- */
-PLANCAKE.showHiddenTaskInCurrentContent = function (taskHtml) {
- taskHtml.fadeTo('fast', 1);
-}
-
-PLANCAKE.getCalendarCurrentDateTs = function(activePanel) {
- var currentDate = PLANCAKE.getActivePanelContentConfig(activePanel).extraParam;
- var currentDateParts = currentDate.match(/([0-9]{4})-([0-9]{2})-([0-9]{2})/);
- return strtotime(currentDateParts[2] + '/' + currentDateParts[1] + '/' + currentDateParts[3]);
-}
-
-PLANCAKE.sendCalendarJumpToDateValue = function(dateText, inst) {
- var selectedDay = null;
- var selectedMonth = null;
- var selectedYear = null;
-
- if (PLANCAKE.isMobile) { // we use another datepicker for mobile app - in a way compatible with JQUery UI one
- selectedDay = inst.values[1];
- selectedMonth = parseInt(inst.values[0]) + 1;
- selectedYear = inst.values[2];
- } else {
- selectedDay = inst.selectedDay;
- selectedMonth = parseInt((inst.selectedMonth)) + 1;
- selectedYear = inst.selectedYear;
- }
-
- var valToSend = selectedYear.toString(10) + '-' +
- str_pad(selectedMonth.toString(10), 2, '0', 'STR_PAD_LEFT') + '-' +
- str_pad(selectedDay.toString(10), 2, '0', 'STR_PAD_LEFT');
-
- PLANCAKE.loadContent({
- done: false,
- type: PLANCAKE.CONTENT_TYPE_CALENDAR,
- extraParam: valToSend
- });
-
- PLANCAKE.activePanel.find('input.calendarJumpDate').parent().find('.ui-datepicker').hide();
-}
-
-PLANCAKE.getDateFormatForDatePicker = function () {
- return PLANCAKE.userSettings.dateFormat.replace('d', 'dd').
- replace('m', 'mm').replace('Y', 'yy');
-}
-
-PLANCAKE.getDatePickerConfig = function () {
- var o = {
- constrainInput: false,
- showOn: 'both',
- buttonImage: '/app/desktop/img/calendar.gif',
- buttonImageOnly: true,
- changeMonth: true,
- changeYear: true,
- dayNamesShort: [PLANCAKE.lang.ACCOUNT_DOW_SUN, PLANCAKE.lang.ACCOUNT_DOW_MON, PLANCAKE.lang.ACCOUNT_DOW_TUE,
- PLANCAKE.lang.ACCOUNT_DOW_WED, PLANCAKE.lang.ACCOUNT_DOW_THU, PLANCAKE.lang.ACCOUNT_DOW_FRI,
- PLANCAKE.lang.ACCOUNT_DOW_SAT],
- monthNamesShort: [PLANCAKE.lang.ACCOUNT_MONTH_JAN, PLANCAKE.lang.ACCOUNT_MONTH_FEB,
- PLANCAKE.lang.ACCOUNT_MONTH_MAR, PLANCAKE.lang.ACCOUNT_MONTH_APR, PLANCAKE.lang.ACCOUNT_MONTH_MAY,
- PLANCAKE.lang.ACCOUNT_MONTH_JUN, PLANCAKE.lang.ACCOUNT_MONTH_JUL, PLANCAKE.lang.ACCOUNT_MONTH_AUG,
- PLANCAKE.lang.ACCOUNT_MONTH_SEP, PLANCAKE.lang.ACCOUNT_MONTH_OCT, PLANCAKE.lang.ACCOUNT_MONTH_NOV,
- PLANCAKE.lang.ACCOUNT_MONTH_DEC],
- nextText: PLANCAKE.lang.ACCOUNT_MISC_NEXT,
- prevText: PLANCAKE.lang.ACCOUNT_MISC_PREV,
- firstDay: PLANCAKE.userSettings.weekStart,
- dateFormat: PLANCAKE.getDateFormatForDatePicker(),
- onSelect: function(dateText, inst) {
- PLANCAKE.sendCalendarJumpToDateValue(dateText, inst);
- }
- };
-
- if (PLANCAKE.isMobile) { // we use another datepicker for mobile app - in a way compatible with JQUery UI one
- delete o['constrainInput'];
- delete o['showOn'];
- delete o['buttonImage'];
- delete o['buttonImageOnly'];
- delete o['changeMonth'];
- delete o['changeYear'];
- delete o['nextText'];
- delete o['prevText'];
- o['mode'] = 'clickpick';
- o['dateFormat'] = o['dateFormat'].replace('mm', 'M');
- o['cancelText'] = PLANCAKE.lang.ACCOUNT_MISC_CANCEL;
- o['setText'] = PLANCAKE.lang.ACCOUNT_MISC_SUBMIT;
- o['yearText'] = PLANCAKE.lang.ACCOUNT_MISC_YEAR;
- o['monthText'] = PLANCAKE.lang.ACCOUNT_MISC_MONTH;
- o['dayText'] = PLANCAKE.lang.ACCOUNT_MISC_DAY;
- }
-
- return o;
-}
-
-/*
- * @param JQuery link
- */
-PLANCAKE.loadCalendarPrevMonth = function (link) {
- var calPanel = link.parents('.panel');
- PLANCAKE.loadContent({
- done: false,
- type: PLANCAKE.CONTENT_TYPE_CALENDAR,
- extraParam: date('Y-m-d', strtotime("-1 month", PLANCAKE.getCalendarCurrentDateTs(calPanel)))
- }, calPanel);
- $('.calendarJumpDate').val('');
-}
-
-/*
- * @param JQuery link
- */
-PLANCAKE.loadCalendarNextMonth = function (link) {
- var calPanel = link.parents('.panel');
- PLANCAKE.loadContent({
- done: false,
- type: PLANCAKE.CONTENT_TYPE_CALENDAR,
- extraParam: date('Y-m-d', strtotime("+1 month", PLANCAKE.getCalendarCurrentDateTs(calPanel)))
- }, calPanel);
- $('.calendarJumpDate').val('');
-}
-
-/*
- * @param JQuery link
- */
-PLANCAKE.loadCalendarPrevWeek = function (link) {
- var calPanel = link.parents('.panel');
- PLANCAKE.loadContent({
- done: false,
- type: PLANCAKE.CONTENT_TYPE_CALENDAR,
- extraParam: date('Y-m-d', strtotime("-" + PLANCAKE.numberOfDaysOnCalendar + " days", PLANCAKE.getCalendarCurrentDateTs(calPanel)))
- }, calPanel);
- $('.calendarJumpDate').val('');
-}
-
-/*
- * @param JQuery link
- */
-PLANCAKE.loadCalendarNextWeek = function (link) {
- var calPanel = link.parents('.panel');
- PLANCAKE.loadContent({
- done: false,
- type: PLANCAKE.CONTENT_TYPE_CALENDAR,
- extraParam: date('Y-m-d', strtotime("+" + PLANCAKE.numberOfDaysOnCalendar + " days", PLANCAKE.getCalendarCurrentDateTs(calPanel)))
- }, calPanel);
- $('.calendarJumpDate').val('');
-}
-
-/**
- * @param JQuery - li element
- * @return PLANCAKE.Task task
- */
-PLANCAKE.getTaskObjFromHtml = function(taskHtml) {
- var taskData = taskHtml.data(PLANCAKE.JQUERY_TASK_DATA_KEY);
- var task = new PLANCAKE.Task();
-
- for (var key in taskData) {
- if (taskData.hasOwnProperty(key)) {
- task[key] = taskData[key];
- }
- }
-
- return task;
+/*************************************************************************************
+* ===================================================================================*
+* Software by: Danyuki Software Limited *
+* This file is part of Plancake. *
+* *
+* Copyright 2009-2010-2011-2012 by: Danyuki Software Limited *
+* Support, News, Updates at: http://www.plancake.com *
+* Licensed under the AGPL version 3 license. * *
+* Danyuki Software Limited is registered in England and Wales (Company No. 07554549) *
+**************************************************************************************
+* Plancake is distributed in the hope that it will be useful, *
+* but WITHOUT ANY WARRANTY; without even the implied warranty of *
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
+* GNU Affero General Public License for more details. *
+* *
+* You should have received a copy of the GNU Affero General Public License *
+* along with this program. If not, see <http://www.gnu.org/licenses/>. *
+* *
+**************************************************************************************/
+var PLANCAKE = PLANCAKE || {};
+
+$(document).ready( function() {
+
+});
+
+/**
+ * @param JQuery noteIcon
+ * @param JQueryEvent e
+ **/
+PLANCAKE.toggleNote = function (noteIcon, e) {
+ noteIcon.parents('li.task').find('.taskNote').toggle();
+ e.stopPropagation();
+}
+
+/**
+ * @param PLANCAKE.Task task
+ * @param JQuery _activePanel (=null)
+ * @return JQuery - li element
+ */
+PLANCAKE.getHtmlTaskObj = function(task, _activePanel) {
+ var activePanel = _activePanel ? _activePanel : PLANCAKE.activePanel;
+ var taskDescription = '',
+ tagIds = null,
+ tagsCounter = null,
+ i = 0,
+ tags = [],
+ tagsString = '',
+ displayInList = false,
+ repetitionHtml = '';
+
+ if (task.repetitionId) {
+ repetitionHtml = '<span class="taskRepetitionString">' + PLANCAKE.formatRepetitionForUser(task) + '</span>' +
+ '<img src="/app/common/img/repetition_icon.png" class="taskRepetition" title="' + PLANCAKE.formatRepetitionForUser(task) + '" />';
+
+ if (! PLANCAKE.isMobile) {
+ // repetitionHtml += '&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;';
+ }
+
+ }
+
+ var taskScheduleDetails = '<div style="text-align: right" class="notForHeader taskScheduleDetails">' +
+ ( PLANCAKE.isMobile ? '' : repetitionHtml) + // for the mobile version, we want to insert the repetitionHTML in another div
+ ( ((task.dueTime !== null) && task.dueTime.toString().length) ? '<span class="taskDueTime">@' + PLANCAKE.formatTimeForUser(task.dueTime) + '</span>' : '') +
+ ( ((task.dueDate !== null) && task.dueDate.length) ? '<span class="taskDueDate">' + task.getHumanFriendlyDueDate() + '</span>' : '') +
+ '</div>';
+
+ if (PLANCAKE.isMobile) {
+ taskScheduleDetails += '<div class="repetitionInfoForMobile">' + repetitionHtml + '</div>';
+ }
+
+
+ var descrWrapper = '<div class="descrWrapper">' +
+ '<span class="description">' + PLANCAKE.linkify(PLANCAKE.encodeEntities(task.description)) + '</span>' +
+ '</div>' +
+
+ '<div class="taskNote notForHeader">' + ( (task.note && task.note.length) ? PLANCAKE.linkify(PLANCAKE.nl2br(htmlspecialchars(task.note))) : '' ) + '</div>';
+
+
+ var taskHtml = $("<li class='task_" + task.id + " fromPanel_" + activePanel.attr('id') + " task'>" +
+ '<span class="simpleTimestamp hidden">' + task.getSimpleTimestamp() + '</span>' +
+ '<div class="notForHeader doneWrapper"><input type="checkbox" name="markAsCompleted" class="markAsCompleted" />&nbsp;</div>' +
+ '<div class="notForHeader starWrapper"><img class="star" src="/app/common/img/empty_star_micro.png" />&nbsp;</div>' +
+
+ (PLANCAKE.isMobile ? (descrWrapper + '<div class="descriptionAnchor"></div>') : taskScheduleDetails) +
+ (PLANCAKE.isMobile ? taskScheduleDetails : descrWrapper) +
+
+ '<a href="#" class="editTask taskAction">' + PLANCAKE.lang.ACCOUNT_MISC_EDIT + '</a>' +
+ '<a href="#" class="addBelowTask taskAction">' + PLANCAKE.lang.ACCOUNT_MISC_ADD_BELOW + '</a>' +
+
+ "</li>");
+
+ taskDescription = taskHtml.find('.description');
+ taskDescriptionAnchor = taskHtml.find('.descriptionAnchor');
+
+ if (task.isHeader) {
+ taskHtml.addClass('header');
+ taskHtml.find('.notForHeader').hide();
+ } else {
+ taskHtml.find('.descrWrapper').addClass('leftIndent');
+ }
+
+ if (task.isStarred) {
+ taskHtml.plancake().star(true);
+ }
+
+ if ( (PLANCAKE.getActivePanelContentConfig(activePanel).type !== PLANCAKE.CONTENT_TYPE_LIST) &&
+ (! task.isHeader) ) {
+ displayInList = true;
+ }
+ if ( (PLANCAKE.getActivePanelContentConfig().type === PLANCAKE.CONTENT_TYPE_LIST) &&
+ (parseInt(PLANCAKE.getActivePanelContentConfig().extraParam) !== task.listId) ) {
+ displayInList = true;
+ }
+ if (displayInList) {
+ var listLinkInList = (PLANCAKE.isMobile) ? '<a href="#tasks-screen?type=list&id=' + task.listId + '">' :
+ '<a class="listLinkInList llil_' + task.listId + '" href=".#">';
+
+ var inList = '<span class="inList">&nbsp;| ' + PLANCAKE.lang.ACCOUNT_MISC_IN_LIST + ' ' + listLinkInList +
+ $().plancake().getList(task.listId).plancake().getName() + '</a></span>';
+
+ if (PLANCAKE.isMobile) {
+ taskDescriptionAnchor.append(inList);
+ } else {
+ taskDescription.after(inList);
+ }
+ }
+
+ if((task.note && task.note.length)) {
+ taskDescription.after('&nbsp;&nbsp;<img class="taskNoteIcon" title="' + PLANCAKE.lang.ACCOUNT_HINT_CLICK_TO_SEE_NOTE + '" alt="' + PLANCAKE.lang.ACCOUNT_HINT_CLICK_TO_SEE_NOTE + '" src="/app/common/img/note_icon.png" />');
+ }
+
+ if (!PLANCAKE.isMobile) { // we don't do it on mobike in order not to increase loading time and also because it is not really needed
+ if((task.description + task.note).indexOf('mail.google.com/mail') >= 0) {
+ var gmailRegExp = /http(s)?:\/\/mail.google.com\/mail[^ ]+/;
+ try {
+ var gmailUrl = (task.description + ' ' + task.note).replace(/(\n|\t)/, ' ').match(gmailRegExp)[0];
+ taskDescription.after('&nbsp;&nbsp;<a target="_blank" href="' + gmailUrl + '"><img style="border: 0px" class="taskGmailIcon" title="' + PLANCAKE.lang.ACCOUNT_HINT_CLICK_TO_SEE_GMAIL + '" alt="' + PLANCAKE.lang.ACCOUNT_HINT_CLICK_TO_SEE_GMAIL + '" src="/app/common/img/gmail_icon.png" /></a>');
+ if (task.note.trim().length === gmailUrl.length) { // the note contains only the link to GMail that we show via the Gmail icon, therefore
+ taskHtml.find('.taskNoteIcon').remove(); // no need to show note icon
+ }
+ } catch (e) {
+ // nothing serious - just the match() call failed - no valid gmail link
+ }
+ }
+ }
+
+ if(task.tagIds) {
+ tagIds = task.tagIds.split(',');
+ tagsCounter = tagIds.length;
+ var tagLink = '';
+
+ for(i = 0; i < tagsCounter; i++) {
+ tagLink = (PLANCAKE.isMobile) ? '<a href="#tasks-screen&type=tag&id=' + tagIds[i] + '">' :
+ '<a class="tagLinkInList tlil_' + tagIds[i] + '" href=".#">';
+ tags.push( tagLink +
+ $().plancake().getTag(tagIds[i]).plancake().getName() + '</a>');
+ }
+ tagsString = '&nbsp;<span class="taskTags">';
+ tagsString += tags.join(', ');
+ tagsString += '</span>';
+
+ if (PLANCAKE.isMobile) {
+ taskDescriptionAnchor.prepend(tagsString);
+ } else {
+ taskDescription.after(tagsString);
+ }
+ }
+
+ if (task.isFromSystem) {
+ // taskDescription.before('<img title="message from the team" src="/app/desktop/img/fire_icon_small.png" />');
+ }
+
+ if ( (PLANCAKE.getActivePanelContentConfig(activePanel).type !== PLANCAKE.CONTENT_TYPE_LIST) ) {
+ taskHtml.find('.addBelowTask').remove();
+ }
+
+ if (PLANCAKE.getActivePanelContentConfig(activePanel).type !== PLANCAKE.CONTENT_TYPE_CALENDAR) {
+ if (task.isOverdue()) {
+ taskHtml.addClass('overdue');
+ } else if (task.isDueToday()) {
+ taskHtml.addClass('dueToday');
+ } else if (task.isDueTomorrow()) {
+ taskHtml.addClass('dueTomorrow');
+ } else {
+ taskHtml.removeClass('overdue today tomorrow');
+ }
+ } else {
+ taskHtml.find('.taskDueDate').hide();
+ }
+
+ if ((task.dueDate !== null) && task.dueDate.length) {
+ taskHtml.addClass('scheduled');
+ }
+
+ if ( (PLANCAKE.getActivePanelContentConfig(activePanel).type === PLANCAKE.CONTENT_TYPE_CALENDAR) &&
+ (task.extra) ) {
+ taskHtml.addClass('dow_' + task.extra.toLowerCase());
+ }
+
+ taskHtml.data(PLANCAKE.JQUERY_TASK_DATA_KEY, task);
+
+ if (! PLANCAKE.isTaskToBeShownInActiveContent(task, PLANCAKE.getActivePanelContentConfig(activePanel))) {
+ PLANCAKE.hideTaskInCurrentContent(taskHtml);
+ }
+
+ if (PLANCAKE.getActivePanelContentConfig(activePanel).type === PLANCAKE.CONTENT_TYPE_LIST) {
+ // tasks need to have an id to serialize when we reorder them
+ taskHtml.attr('id', 'task_' + activePanel.attr('id') + '_' + task.id);
+ }
+
+ if (task.isCompleted) {
+ taskHtml.addClass('completed');
+ }
+
+ if (task.hasLocalModifications) {
+ taskHtml.addClass('hasLocalModifications');
+ }
+
+ if (task.isLocal) {
+ taskHtml.addClass('isLocal');
+ }
+
+ return taskHtml;
+}
+
+
+/**
+ * @param Plancake.Task task
+ * @param JQuery activeContent
+ * @return boolean
+ */
+PLANCAKE.isTaskToBeShownInActiveContent = function(task, activeContent) {
+ var toBeShown = true;
+
+ if ( (activeContent.type === PLANCAKE.CONTENT_TYPE_LIST) && (activeContent.extraParam != task.listId) ) {
+ toBeShown = false;
+ } else if ( (activeContent.type === PLANCAKE.CONTENT_TYPE_TAG) && (!task.hasTag(activeContent.extraParam)) ) {
+ toBeShown = false;
+ } else if ( (activeContent.type === PLANCAKE.CONTENT_TYPE_STARRED) && (!task.isStarred) ) {
+ toBeShown = false;
+ } else if ( (activeContent.type === PLANCAKE.CONTENT_TYPE_TODAY) && (!task.getQuickDateLabel()) ) {
+ toBeShown = false;
+ } else if ( (activeContent.type === PLANCAKE.CONTENT_TYPE_CALENDAR) && (!task.dueDate) ) {
+ toBeShown = false;
+ }
+
+ return toBeShown;
+}
+
+
+/**
+ * see PLANCAKE.showHiddenTaskInCurrentContent
+ *
+ * @param JQuery - li element
+ */
+PLANCAKE.hideTaskInCurrentContent = function (taskHtml) {
+ taskHtml.fadeTo('fast', 0.4);
+}
+
+/**
+ * see PLANCAKE.hideTaskInCurrentContent
+ *
+ * @param JQuery - li element
+ */
+PLANCAKE.showHiddenTaskInCurrentContent = function (taskHtml) {
+ taskHtml.fadeTo('fast', 1);
+}
+
+PLANCAKE.getCalendarCurrentDateTs = function(activePanel) {
+ var currentDate = PLANCAKE.getActivePanelContentConfig(activePanel).extraParam;
+ var currentDateParts = currentDate.match(/([0-9]{4})-([0-9]{2})-([0-9]{2})/);
+ return strtotime(currentDateParts[2] + '/' + currentDateParts[1] + '/' + currentDateParts[3]);
+}
+
+PLANCAKE.sendCalendarJumpToDateValue = function(dateText, inst) {
+ var selectedDay = null;
+ var selectedMonth = null;
+ var selectedYear = null;
+
+ if (PLANCAKE.isMobile) { // we use another datepicker for mobile app - in a way compatible with JQUery UI one
+ selectedDay = inst.values[1];
+ selectedMonth = parseInt(inst.values[0]) + 1;
+ selectedYear = inst.values[2];
+ } else {
+ selectedDay = inst.selectedDay;
+ selectedMonth = parseInt((inst.selectedMonth)) + 1;
+ selectedYear = inst.selectedYear;
+ }
+
+ var valToSend = selectedYear.toString(10) + '-' +
+ str_pad(selectedMonth.toString(10), 2, '0', 'STR_PAD_LEFT') + '-' +
+ str_pad(selectedDay.toString(10), 2, '0', 'STR_PAD_LEFT');
+
+ PLANCAKE.loadContent({
+ done: false,
+ type: PLANCAKE.CONTENT_TYPE_CALENDAR,
+ extraParam: valToSend
+ });
+
+ PLANCAKE.activePanel.find('input.calendarJumpDate').parent().find('.ui-datepicker').hide();
+}
+
+PLANCAKE.getDateFormatForDatePicker = function () {
+ return PLANCAKE.userSettings.dateFormat.replace('d', 'dd').
+ replace('m', 'mm').replace('Y', 'yy');
+}
+
+PLANCAKE.getDatePickerConfig = function () {
+ var o = {
+ constrainInput: false,
+ showOn: 'both',
+ buttonImage: '/app/desktop/img/calendar.gif',
+ buttonImageOnly: true,
+ changeMonth: true,
+ changeYear: true,
+ dayNamesShort: [PLANCAKE.lang.ACCOUNT_DOW_SUN, PLANCAKE.lang.ACCOUNT_DOW_MON, PLANCAKE.lang.ACCOUNT_DOW_TUE,
+ PLANCAKE.lang.ACCOUNT_DOW_WED, PLANCAKE.lang.ACCOUNT_DOW_THU, PLANCAKE.lang.ACCOUNT_DOW_FRI,
+ PLANCAKE.lang.ACCOUNT_DOW_SAT],
+ monthNamesShort: [PLANCAKE.lang.ACCOUNT_MONTH_JAN, PLANCAKE.lang.ACCOUNT_MONTH_FEB,
+ PLANCAKE.lang.ACCOUNT_MONTH_MAR, PLANCAKE.lang.ACCOUNT_MONTH_APR, PLANCAKE.lang.ACCOUNT_MONTH_MAY,
+ PLANCAKE.lang.ACCOUNT_MONTH_JUN, PLANCAKE.lang.ACCOUNT_MONTH_JUL, PLANCAKE.lang.ACCOUNT_MONTH_AUG,
+ PLANCAKE.lang.ACCOUNT_MONTH_SEP, PLANCAKE.lang.ACCOUNT_MONTH_OCT, PLANCAKE.lang.ACCOUNT_MONTH_NOV,
+ PLANCAKE.lang.ACCOUNT_MONTH_DEC],
+ nextText: PLANCAKE.lang.ACCOUNT_MISC_NEXT,
+ prevText: PLANCAKE.lang.ACCOUNT_MISC_PREV,
+ firstDay: PLANCAKE.userSettings.weekStart,
+ dateFormat: PLANCAKE.getDateFormatForDatePicker(),
+ onSelect: function(dateText, inst) {
+ PLANCAKE.sendCalendarJumpToDateValue(dateText, inst);
+ }
+ };
+
+ if (PLANCAKE.isMobile) { // we use another datepicker for mobile app - in a way compatible with JQUery UI one
+ delete o['constrainInput'];
+ delete o['showOn'];
+ delete o['buttonImage'];
+ delete o['buttonImageOnly'];
+ delete o['changeMonth'];
+ delete o['changeYear'];
+ delete o['nextText'];
+ delete o['prevText'];
+ o['mode'] = 'clickpick';
+ o['dateFormat'] = o['dateFormat'].replace('mm', 'M');
+ o['cancelText'] = PLANCAKE.lang.ACCOUNT_MISC_CANCEL;
+ o['setText'] = PLANCAKE.lang.ACCOUNT_MISC_SUBMIT;
+ o['yearText'] = PLANCAKE.lang.ACCOUNT_MISC_YEAR;
+ o['monthText'] = PLANCAKE.lang.ACCOUNT_MISC_MONTH;
+ o['dayText'] = PLANCAKE.lang.ACCOUNT_MISC_DAY;
+ }
+
+ return o;
+}
+
+/*
+ * @param JQuery link
+ */
+PLANCAKE.loadCalendarPrevMonth = function (link) {
+ var calPanel = link.parents('.panel');
+ PLANCAKE.loadContent({
+ done: false,
+ type: PLANCAKE.CONTENT_TYPE_CALENDAR,
+ extraParam: date('Y-m-d', strtotime("-1 month", PLANCAKE.getCalendarCurrentDateTs(calPanel)))
+ }, calPanel);
+ $('.calendarJumpDate').val('');
+}
+
+/*
+ * @param JQuery link
+ */
+PLANCAKE.loadCalendarNextMonth = function (link) {
+ var calPanel = link.parents('.panel');
+ PLANCAKE.loadContent({
+ done: false,
+ type: PLANCAKE.CONTENT_TYPE_CALENDAR,
+ extraParam: date('Y-m-d', strtotime("+1 month", PLANCAKE.getCalendarCurrentDateTs(calPanel)))
+ }, calPanel);
+ $('.calendarJumpDate').val('');
+}
+
+/*
+ * @param JQuery link
+ */
+PLANCAKE.loadCalendarPrevWeek = function (link) {
+ var calPanel = link.parents('.panel');
+ PLANCAKE.loadContent({
+ done: false,
+ type: PLANCAKE.CONTENT_TYPE_CALENDAR,
+ extraParam: date('Y-m-d', strtotime("-" + PLANCAKE.numberOfDaysOnCalendar + " days", PLANCAKE.getCalendarCurrentDateTs(calPanel)))
+ }, calPanel);
+ $('.calendarJumpDate').val('');
+}
+
+/*
+ * @param JQuery link
+ */
+PLANCAKE.loadCalendarNextWeek = function (link) {
+ var calPanel = link.parents('.panel');
+ PLANCAKE.loadContent({
+ done: false,
+ type: PLANCAKE.CONTENT_TYPE_CALENDAR,
+ extraParam: date('Y-m-d', strtotime("+" + PLANCAKE.numberOfDaysOnCalendar + " days", PLANCAKE.getCalendarCurrentDateTs(calPanel)))
+ }, calPanel);
+ $('.calendarJumpDate').val('');
+}
+
+/**
+ * @param JQuery - li element
+ * @return PLANCAKE.Task task
+ */
+PLANCAKE.getTaskObjFromHtml = function(taskHtml) {
+ var taskData = taskHtml.data(PLANCAKE.JQUERY_TASK_DATA_KEY);
+ var task = new PLANCAKE.Task();
+
+ for (var key in taskData) {
+ if (taskData.hasOwnProperty(key)) {
+ task[key] = taskData[key];
+ }
+ }
+
+ return task;
}
View
27 web/app/desktop/css/plancake.bottomPanel.css
@@ -6,6 +6,9 @@
width: 100%;
height: 38px;
padding: 2px 3px;
+ -webkit-box-shadow: 0px 0px 10px 1px #000;
+ -moz-box-shadow: 0px 0px 10px 1px #000;
+ box-shadow: 0px 0px 10px 1px #000;
}
#bottomPanel > div {
@@ -95,6 +98,28 @@
-moz-box-shadow: 0px 1px 0px 0px #606060;
box-shadow: 0px 1px 0px 0px #606060;
}
+
+#todayToInbox {
+ font-size: 12px;
+ -webkit-border-radius: 15px;
+ -moz-border-radius: 15px;
+ border-radius: 15px;
+ height:16px;
+ border: 1px solid #1f1f1f;
+ background: #7bc0ed; /* Old browsers */
+ background: -moz-linear-gradient(top, #7bc0ed 5%, #2e9fea 5%, #1568a3 99%); /* FF3.6+ */
+ background: -webkit-gradient(linear, left top, left bottom, color-stop(5%,#7bc0ed), color-stop(5%,#2e9fea), color-stop(99%,#1568a3)); /* Chrome,Safari4+ */
+ background: -webkit-linear-gradient(top, #7bc0ed 5%,#2e9fea 5%,#1568a3 99%); /* Chrome10+,Safari5.1+ */
+ background: -o-linear-gradient(top, #7bc0ed 5%,#2e9fea 5%,#1568a3 99%); /* Opera 11.10+ */
+ background: -ms-linear-gradient(top, #7bc0ed 5%,#2e9fea 5%,#1568a3 99%); /* IE10+ */
+ background: linear-gradient(top, #7bc0ed 5%,#2e9fea 5%,#1568a3 99%); /* W3C */
+ filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#7bc0ed', endColorstr='#1568a3',GradientType=0 ); /* IE6-9 */
+ color: #fff;
+ -webkit-box-shadow: 0px 1px 0px 0px #606060;
+ -moz-box-shadow: 0px 1px 0px 0px #606060;
+ box-shadow: 0px 1px 0px 0px #606060;
+}
+
#bottomPanel #accountButton .ui-button-text:hover {
font-size: 12px;
}
@@ -267,4 +292,4 @@
#bottomPanel #todayToInbox .ui-button-text {
font-size: 12px;
}
-.bottomPanelFiller { color:#3c3c3c !important;}
+.bottomPanelFiller { display:none !important;}
View
8 web/app/desktop/css/plancake.counters.css
@@ -36,8 +36,8 @@ ul#lists li.selected .inboxCounter {
-webkit-box-shadow: inset 1px 1px 6px #aaa;
-moz-box-shadow: inset 1px 1px 6px #aaa;
box-shadow: inset 1px 1px 6px #aaa;
- background-color: #E8ECFF;
- color: #999;
+ background-color: #f3f3f3;
+ color: #000;
width: 28px;
}
@@ -59,8 +59,8 @@ ul#lists li.selected .todoCounter {
-webkit-box-shadow: inset 1px 1px 6px #aaa;
-moz-box-shadow: inset 1px 1px 6px #aaa;
box-shadow: inset 1px 1px 6px #aaa;
- background-color: #E8ECFF;
- color: #999;
+ background-color: #f3f3f3;
+ color: #000;
width: 28px;
}
View
12 web/app/desktop/css/plancake.general.css
@@ -30,7 +30,7 @@ h1:hover {
}
h3 {
- font-weight: bold;
+ font-weight: 300;
font-size: 140%;
width: 100%;
/* border-bottom: 2px solid #1C94C4; */
@@ -103,7 +103,9 @@ div.dragging {
}
-#bottomFilters .ui-state-default, .ui-widget-content .ui-state-default, .ui-widget-header .ui-state-default {
+#bottomFilters .ui-state-default,
+#bottomFilters .ui-widget-content .ui-state-default,
+#bottomFilters .ui-widget-header .ui-state-default {
border: 1px solid #1f1f1f;
background: #313131;
font-weight: normal;
@@ -134,7 +136,8 @@ div.dragging {
box-shadow: inset 0px 2px 3px 0px #202020;
-webkit-box-shadow: 0px 1px 0px 0px #606060;
-moz-box-shadow: 0px 1px 0px 0px #606060;
- box-shadow: 0px 1px 0px 0px #606060;
+ box-shadow: 0px 1px 0px 0px #606060;
+ margin-top:4px;
}
#bottomFilters label[for=filterCompleted] {
@@ -198,3 +201,6 @@ input, select {
font-size: 0.75em;
}
+.taskDescrShortcutsHelp { display:none !important;}
+.addTaskBottom { display:none !important;}
+.collapseListsBtn { display:none !important;}
View
1  web/app/desktop/css/plancake.layout.css
@@ -109,6 +109,7 @@ div.panelActions {
border-radius: 8px 8px 8px 8px;
-moz-border-radius: 8px;
-webkit-border-radius: 8px;
+ display: none;
}
.panelAction {
View
20 web/app/desktop/css/plancake.listsAndTags.css
@@ -2,6 +2,15 @@ ul#lists {
margin-bottom: 0px;
}
+
+ul#lists li:first-child:before{
+ content: url(/app/desktop/img/inbox_black.png);
+}
+ul#lists li:first-child.selected:before{
+ content: url(/app/desktop/img/inbox_white.png);
+}
+
+
#hackToScrollToBottomList {
display: block;
width: 1px;
@@ -58,7 +67,7 @@ ul#lists li.selected, ul#tags li.selected {
div#listsTitle, div#tagsTitle {
position: relative;
- width: 200px;
+ width: 250px;
margin-bottom: 4px;
}
@@ -115,9 +124,14 @@ ul#lists .header {
#listsActions a, #tagsActions a {
float: right;
- margin-left: 7px;
font-size: 80%;
+ border:none !important;
+ background:url(/app/desktop/img/minkenberg/icon.png) -42px -38px !important;
+ text-indent:-9999 !important;
+ #fff !important;
+ width:24px !important;
}
+#listsActions a, #tagsActions a:hover { background-position: -16px -38px !important;}
/* MM Mod */
@@ -132,5 +146,7 @@ ul#lists .header {
padding-bottom: 5px;
height: 14px;
font-family: 'Lato', sans-serif;
+ margin-left:5px;
}
+
View
35 web/app/desktop/css/plancake.tasks.css
@@ -65,7 +65,9 @@ ul.tasks li.task {
}
a.taskOptionsLink {
- background: url('/app/desktop/img/more_icon.png') no-repeat;
+ display:none !important;
+ /*
+ background: url('/app/desktop/img/more_icon.png') no-repeat;
float: right;
margin-right: 20px;
padding-left: 19px;
@@ -73,6 +75,7 @@ a.taskOptionsLink {
color: #eee;
margin-top: 10px;
font-size: 0.8em;
+ */
}
a.taskOptionsLink:hover {
@@ -95,7 +98,8 @@ a.taskOptionsLink:hover {
.noTasks {
padding: 20px;
- color: #666;
+ color: #fff;
+ text-shadow: 0px 0px 6px black;
}
.addTaskBottom {
@@ -219,11 +223,12 @@ ul.completedTasks li span {
font-size: 12px;
white-space: nowrap;
height: 25px;
- margin-right: 50px;
+ margin: 0 5px 0 5px;
+ font-weight:bold;
}
.taskDueTime {
- color: #3333ff;
+ color: #838383;
font-size: 13px;
white-space: nowrap;
height: 25px;
@@ -266,10 +271,12 @@ ul.completedTasks li span {
.taskFilters {
margin-bottom: 15px;
font-size: 0.9em;
- text-shadow: 0px 0px 2px #fff;
+ text-shadow: 0px 0px 6px #000;
+ color:#fff !important;
}
.hideScheduledTasks {
+ margin-left:5px;
display: block;
text-align: left;
/* padding-top: 3px; */
@@ -329,7 +336,7 @@ div.newTaskInCalButton .ui-button-text {
/* MM added */
.taskNoteIcon {
position: relative;
- top: 4px;
+ top: 1px;
}
ul.tasks {
@@ -358,3 +365,19 @@ ul.tasks .ui-state-highlight {
.taskFilters select {
font-size: 1.0em !important;
}
+
+
+.ui-icon-pencil {
+ background:url(/app/desktop/img/minkenberg/icon.png) -161px -12px !important;
+}
+.ui-icon-pencil:hover {
+ background:url(/app/desktop/img/minkenberg/icon.png) -137px -12px !important;
+}
+
+.ui-icon-arrowreturnthick-1-e { display:none !important;}
+.addBelowTask { display:none !important;}
+.addBelowList { display:none !important;}
+.editTask { border:none !important; color: #fff !important; background: none!important;}
+.editTag { border:none !important; color: #fff !important; background: none!important; top: 8px;right: 10px;}
+.editList { border:none !important; color: #fff !important; background: none!important; top: 8px;right: 50px;}
+.taskNoteIcon { margin-left:5px;}
View
BIN  web/app/desktop/img/inbox_black.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
View
BIN  web/app/desktop/img/inbox_white.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
View
BIN  web/app/desktop/img/minkenberg/Thumbs.db
Binary file not shown
Please sign in to comment.
Something went wrong with that request. Please try again.