- // Generated by CoffeeScript 1.12.2
-
- /*
- // ==UserScript==
- // @name Trello - Thenow Trello Extend
- // @namespace http://ejiasoft.com/
- // @version 1.1.7
- // @description Extend trello.com
- // @description:zh-CN 扩展trello.com看板的功能
- // @homepageurl https://github.com/thenow/ThenowTrelloExtend
- // @author thenow
- // @run-at document-end
- // @license MIT license
- // @match http*://*trello.com
- // @match http*://*trello.com/*
- // @grant none
- // ==/UserScript==
- */
-
- (function() {
- var addBgBtn, addBoardBtn, addImgSwitchBtn, addMemberToggleBtn, boardId, boardInit, btnClass, btnTextClass, cardLabelCss, curUrl, listCardFormat, listFormatInit, listTitleFormat, listToggle, pageRegex;
-
- pageRegex = {
- CardLimit: /\[\d+\]/,
- Category: /\{.+\}/g,
- User: /`\S+`/g,
- CardCount: /^\d+/,
- Number: /\d+/,
- CardNum: /^#\d+/,
- HomePage: /com[\/]$/,
- BoardId: /\/b\/.{8}\/-$/
- };
-
- curUrl = window.location.href;
-
- boardId = pageRegex.BoardId.exec(curUrl);
-
- cardLabelCss = "<style type=\"text/css\">\n .card-short-id {\n display: inline;\n font-weight: bold;\n }\n .card-short-id:after {\n content:\" \";\n }\n .column-list{padding:5px 15px 10px;}\n .column-list li{height:30px;width:100%;display:block;}\n .column-list li a{display:block;height:100%;line-height:30px;position:relative;}\n .column-list li a:before{font-family: trellicons;content:\"\\e910\";display:block;position:absolute;right:5px;top:2px;color:#333;}\n .column-list li a.false:before{content:\"-\";color:#DDD;}\n .card-label.mod-card-front {\n width: auto;\n height: 12px;\n line-height: 12px;\n font-size: 12px;\n text-shadow: none;\n padding: 3px 6px;\n font-family: Microsoft Yahei;\n font-weight: 400;\n }\n .list-card-title .card-short-id {\n display: inline;\n margin-right: 4px;\n color: #0079bf;\n }\n .list .list-header-num-cards {\n display: block;\n font-size: 12px;\n line-height: 18px;\n }\n</style>";
-
- listCardFormat = function(objCard) {
- var listCardTitle;
- return listCardTitle = objCard.find('div.list-card-details>a.list-card-title').each(function() {
- var cardCate, cardCategoryArray, cardTitle, cardUser, cardUserArray, curCardTitle, i, j, len, len1, results;
- curCardTitle = $(this);
- cardTitle = curCardTitle.html();
- cardUserArray = cardTitle.match(pageRegex.User);
- cardCategoryArray = cardTitle.match(pageRegex.Category);
- if (cardUserArray !== null) {
- for (i = 0, len = cardUserArray.length; i < len; i++) {
- cardUser = cardUserArray[i];
- cardTitle = cardTitle.replace(cardUser, "<code>" + (cardUser.substring(1, cardUser.length - 1)) + "</code>");
- curCardTitle.html(cardTitle);
- }
- }
- if (cardCategoryArray !== null) {
- results = [];
- for (j = 0, len1 = cardCategoryArray.length; j < len1; j++) {
- cardCate = cardCategoryArray[j];
- cardTitle = cardTitle.replace(cardCate, "<code style=\"color:#0f9598\">" + (cardCate.substring(1, cardCate.length - 1)) + "</code>");
- results.push(curCardTitle.html(cardTitle));
- }
- return results;
- }
- });
- };
-
- listTitleFormat = function(objList) {
- var cardCount, cardLimit, cardLimitInfo, curCardCountP, curListHeader, curListTitle;
- curListHeader = objList.find('div.list-header');
- curListTitle = curListHeader.find('textarea.list-header-name').val();
- cardLimitInfo = pageRegex.CardLimit.exec(curListTitle);
- if (cardLimitInfo === null) {
- return false;
- }
- curCardCountP = curListHeader.find('p.list-header-num-cards');
- cardCount = pageRegex.CardCount.exec(curCardCountP.text())[0];
- cardLimit = pageRegex.Number.exec(cardLimitInfo[0])[0];
- if (cardCount > cardLimit) {
- return objList.css('background', '#903');
- } else if (cardCount === cardLimit) {
- return objList.css('background', '#c93');
- } else {
- return objList.css('background', '#e2e4e6');
- }
- };
-
- listToggle = function(objList) {
- var listMenu, toggleBtn;
- if (objList.find('.toggleBtn').length > 0) {
- return;
- }
- listMenu = objList.find('div.list-header-extras');
- toggleBtn = $('<a class="toggleBtn list-header-extras-menu dark-hover"><span class="icon-sm">隐</span></a>');
- toggleBtn.click(function() {
- var base;
- base = objList.parent();
- if (base.width() === 30) {
- base.css('width', '');
- } else {
- base.width(30);
- }
- objList.find('.js-open-list-menu').toggle();
- objList.find('div.list-cards').toggle();
- return objList.find('.open-card-composer').toggle();
- });
- return listMenu.append(toggleBtn);
- };
-
- listFormatInit = function() {
- return $('div.list').each(function() {
- listTitleFormat($(this));
- listToggle($(this));
- return $(this).find('div.list-card').each(function() {
- return listCardFormat($(this));
- });
- });
- };
-
- btnClass = 'board-header-btn board-header-btn-org-name board-header-btn-without-icon';
-
- btnTextClass = 'board-header-btn-text';
-
- addBoardBtn = function(id, text, eventAction, eventName) {
- var newBtn;
- if (eventName == null) {
- eventName = 'click';
- }
- if ($("#" + id).length > 0) {
- return $("#" + id);
- }
- newBtn = $("<a id=\"" + id + "\" class=\"" + btnClass + "\"><span class=\"" + btnTextClass + "\">" + text + "</span></a>");
- $('div.board-header').append(newBtn);
- if (eventAction !== null) {
- newBtn.bind(eventName, eventAction);
- }
- return newBtn;
- };
-
- addImgSwitchBtn = function() {
- return addBoardBtn('btnImgSwitch', '隐藏/显示图片', function() {
- return $('div.list-card-cover').slideToggle();
- });
- };
-
- addBgBtn = function() {
- return addBoardBtn('setBgBtn', '设置背景图片', function() {
- var newBgUrl, oldBgUrl;
- oldBgUrl = localStorage[boardId[0]];
- newBgUrl = prompt('请输入背景图片地址', oldBgUrl);
- if (newBgUrl === oldBgUrl) {
- return;
- }
- if (newBgUrl === null || newBgUrl === '') {
- localStorage.removeItem(boardId[0]);
- $('body').css('background-image', '');
- return;
- }
- return localStorage[boardId[0]] = newBgUrl;
- });
- };
-
- addMemberToggleBtn = function() {
- return addBoardBtn('memberSwitchBtn', '隐藏/显示成员', function() {
- return $('div.list-card-members').slideToggle();
- });
- };
-
- boardInit = function() {
- var bgUrl, localBgUrl;
- if (pageRegex.HomePage.exec(curUrl) !== null) {
- return;
- }
- bgUrl = $('body').css('background-image');
- localBgUrl = localStorage[boardId[0]];
- if (localBgUrl !== void 0 && bgUrl !== localBgUrl) {
- $('body').css('background-image', "url(\"" + localBgUrl + "\")");
- }
- $('p.list-header-num-cards').show();
- listFormatInit();
- addImgSwitchBtn();
- addBgBtn();
- return addMemberToggleBtn();
- };
-
- $(function() {
- $('head').append(cardLabelCss);
- return setInterval((function() {
- curUrl = window.location.href;
- boardId = pageRegex.BoardId.exec(curUrl);
- return boardInit();
- }), 1000);
- });
-
- }).call(this);