Просмотр сообщений

В этом разделе можно просмотреть все сообщения, сделанные этим пользователем.


Темы - NA

Страницы: [1] 2
1
Во исполнение данного 6@6R обещания, публикую плаг для отправки SMS через сотовый телефон, подключенный к COM\USB порту компьютера.

Версия 1.0, минимально прилизана для публикации. Списком не отправляет, истории отправленных сообщений не ведет. Возможно, спустя время на этом месте появится публичный релиз 1.5 с этими функциями.

Подробное описание плагина и всего, что с ним связано - в текстовике sms.readme.txt, вложенном в архив дистрибутива.

2
Особо и не надо было, но сегодня пригодилось: http://forum.leadertask.ru/index.php/topic,5619.0.html

Хотя поставил тег [ flash ] - но ссылка выводится простым линком, не показывая картинку, как это предполагается тегом.

3
Они же - веселые картинки  *bs*

Рекламный флэш-баннер, но идея понравилась:

http://sovershenstvo.com.ua/static/reklam/banners/bannerkosmos.swf

4
Собрался-таки вынести в отдельную ветку.

Предложение вызвано необходимостью оперативно вывести подзадачи либо с названиями корневых задач, либо Проектов, а также оперативно снова их отключить.
Подобные возможности предоставляет плагин "Групповое переименование" - но не будешь же каждый раз из-за одной распечатки рисковать и переименовывать всю базу.

Вместо этого предлагается два варианта реализации моего предложения:
1. Самый простой. В настройки фильтра (не в настройки программы!) добавить флажок "Отображать в наименовании полную иерархию".

2. Самый правильный. В "Фильтрах" же добавить поле для ввода "переменных", из которых будет составляться наименование задачи в панели. Например:

"%PROJECT%: %PARENT% - %TASKNAME% (%PERFORMER%)"
(Название Проекта - двоеточие - Родительская задача, если есть - тире - название Задачи - скобка - Исполнитель - скобка)
или
"%PROJECTCOMM%: %TASKNAME% (%ENDDATE%)"
(первая строчка из комментария к Проекту - двоеточие - Название задачи - скобка - Срок окончания - скобка), и так далее.

Второй вариант несколько сложнее, но неизмеримо удобнее.
В частности, для мгновенной перенастройки списка задач под печать и обратно для работы.

К тому же подобная настройка в пользовательских фильтрах:
- позволит минимизировать реальные переименования задач.
- облегчит просмотр сложных списков с большой вложенностью.
- резко снизит необходимость предложения "Настраиваемые поля в печати".
- почти закроет потребности предложения "Индивидуальный шаблон для проекта", и прочая, прочая, одним разом убивает несколько зайцев.


И напоследок кросспост из исходной ветки (есть неповторяющаяся информация):
Mmorf
на мой взгляд - это тот же частный случай, что и несоотнесения задачи к проекту.

С одной стороны - да, реализован плагин "Групповое переименование задач". С другой - существует отработанная практика готовых интерфейсных решений, например, все та же 1С.
Там это дано предусмотрено. Все, что надо, доступно через различные
Объект.Наименование
Объект.Родитель.Наименование
и, наконец
Объект.ПолноеНаименованиеОбъекта() (Возвращает строку, содержащую полное наименование выбранного элемента справочника со всеми вышестоящими уровнями, разделенными символом "/").

Понятно, что до пользовательских столбцов LT пока не дорос, но, скажем, дописать в настройки выбор вывода наименования (и вывод столбца в указанном режиме) несложно.

Считаю крайне полезным добавить такую настройку не в общие настройки программы, а окно пользовательских фильтров (каждый фильтр имеет право на свой вид отображения наименования - краткий или полный).

Вот тогда отпадет необходимость в большинстве костылей с именованием и просмотром списков любой сложности.

5
Не всегда отлавливаются клавиши перемещения курсора, если в дереве задач только одна задача.

Проверяем: создаем категорию в Навигаторе, создаем в ней единственную задачу.

Tab (фокус переходит на Навигатор), "вверх-вниз" (просто переключаем категории, чтобы сбросить текущий фокус), снова
Tab (фокус переходит на панель "Задачи"), "вверх-вниз", и вот тут... получит задача фокус или нет - бабушка надвое сказала.

Причем в более ранней 6.8.9 фокус не ловится принципиально, а в 6.9 - как масть попрет :)

При этом, в версии 6.8.9, если перейти таким образом в категорию с несколькими задачами и нажать "вниз" - фокус получает сразу вторая задача, а в 6.9 - первая, как положено.
Т.е. клавиши стали обрабатываются корректнее, но не идеально - в описанной ситуации все равно приходится подключать мышь.

Конечно, ситуация с единственной задачей в категории нечастая, но она вполне вероятна.

6

Попробовал сейчас из плагина зацепиться напрямую - то ли защита какая, то ли в плаге глюк *bm*, но:
- если компилирую плаг с созданием объекта враппера SQLite - плаг исчезает из всех меню (просто объявление Create!).
- перекомпилирую без создания объекта (но с подключенным враппером) - плаг снова появляется во всех меню.

Что странно и забавно, т.к. строка для меню запрашивается из GetTaskMenuCommandName, а объект враппера создается только в TaskMenuCommandExecute (т.е., на момент вывода меню вторая функция еще однозначно не активна).

Собственно, не очень-то и хотелось *bk* (поэкспериментировал на скорую руку по случаю),
но зато вспомнил, что вопрос с доступом к базе в API так и не решился.

На мой взгляд, имеет смысл внедрить в API
void AddInLT_SQL_Exec( LPCWSTR ) ( для всяческих CREATE INSERT UPDATE etc), а желательно, конечно, и
LPCWSTR AddInLT_SQL_Query( LPCWSTR ) (собсно SELECT, между рядами которого нуль, а плаг пусть сам режет на части).

Можно и объединить их, просто возвращать в первом случае в непустом тексте сообщение об ошибке, и пустую строку - если все ок.

Заморачиваться с передачей плагину результатов запроса построчно - имхо порочно (экспромт, господа гусары!), безопаснее быстро плюнуть в него весь массив одной строкой и пойти дальше.

7
Вот, например, встал на форуме вопрос об отчете по истории задач. А как туда простучаться?

Если даже напрямую (исключительно R-O) - то кто такой этот changebit, формируется ли он маской или это набор кейсов?

В общем, API пора ширить дальше (за последние билды оно практически не изменилось), и главное - хотя бы минимально документировать БД.

8
Теперь процесс восстановления Ваших строк после обновлений станет намного удобнее благодаря этой нехитрой утилитке.

Предложения и сообщения об ошибках просьба оставлять в той теме.

9
О сайте и о форуме / Глюк: bb-коды
« : 01 Июня 2010, 03:27:02 »
Создаю сообщение с квадратными скобками, между ними и текстом оставляю пробелы (чтобы движок понял, что это не тег), получаем:

Цитировать
Цитировать

Хотя на "Предварительном просмотре" (или если нажать ссылку "Цитировать" на отправленном сообщении) все нормально:


Цитировать
[ Russian.ini ]
PlanningIn=Руда
About=Кому сказать спасибо?
Status_NotBegin=На согласовании


10
Настала пора раздел "Плагины" переименовывать в "Плагины и утилиты" *bs*


Некоторые пользователи сталкиваются с необходимостью изменить некоторые предопределенные языковые строки в LeaderTask.

Например, переименовать "Входящие" в "Руда".
Или, чтобы получить недостающие статусы за счет ненужных имеющихся - "На согласовании" вместо "Не началось", и т.д.
Или переименовать Приоритет "Без приоритета" в "Обычный"...


Способ добиться этого несложен и описан несколькими пользователями (в т.ч. и мной) и опубликован в МаХи и Справке.
Но: билды LeaderTask выходят достаточно часто (практически каждую неделю), и возникает вопрос о постоянном переписывании языковых файлов, что слегка портит радость от обновлений.

Можно продолжать использовать старые, уже переделанные языковые файлы.
Но что, если в билде добавились новые строки? Остается снова вписывать все строки вручную.

А почему бы не дать заняться этой рутинной возней программе? Которая не "запарится" и не воткнет текст в соседнюю строчку, которая не устанет сверять состояние языковых файлов хоть каждые пять минут... которая обеспечит, в конце концов, соответствие языковых файлов во всех сетевых копиях, и может запускаться автоматически по расписанию, или в скрипте сразу за обновлением.



Итак, встречайте: Пакетная замена строк в LT! То ли патчер, то ли твикер, то ли всего понемногу. *bm*

Что программа может (и делает):
- одновременно обновить ВСЕ языковые ini-файлы в папке Languages, если соответствующие секции прописаны в файле замен.
- запуститься с подробным отчетом о каждой замене (параметр /detail в командной строке)
- запуститься в скрытом режиме по скрипту или расписанию без вывода окон (параметр /nogui в командной строке)
- запомнить последний указанный путь к папке, содержащей файл LeaderTask.exe
- предупредить из скрытого режима, что
- запустить практически неограниченное количество копий одновременно (так как не пишет в свои настройки в пакетном режиме)
- открыть эту страницу, чтобы Вы могли прочитать более подробную справку, сказать автору спасибо или грязно выругаться :D

Программа исходит из того, что:
- исполняемый файл называется LeaderTask.exe
- языковые файлы лежат в подпапке Languages
- трансляции одних и тех же терминов в разных секциях одинаковы ("Status" всегда = "Статус", независимо от секции)

Чего программа не делает:
- не патчит dll и иные ресурсные и исполняемые файлы
- не любит капслокеров (набирайте параметры в нижнем регистре)
- не понимает больше одного параметра (а зачем ей два противоречащих друг другу?)
- не редактирует сама файл замен. Этот файл будет открыт в Вашем любимом текстовом редакторе (ассоциация ini по умолчанию)
- и - главное - не читает за Вас справку

Формат файла замен:
- Unicode (для совместимости с языковыми файлами LT)
- каждая секция (например, [Russian.ini]) соответствует имени разыскиваемого языкового файла (LeaderTask\Languages\Russian.ini)
- каждая строка имеет вид "Ключ" (берется нужный из любого языкового файла LT), разделитель (знак "=") и "Значение" (вписываете желаемое)


Пример:
Цитировать
[Russian.ini]
PlanningIn=Руда
About=Кому сказать спасибо?
Status_NotBegin=На согласовании


Алгоритм поиска и замены:
1. Перебираются языковые секции файла замен. Пустые игнорируются.
2. Оставшиеся секции сверяются с соответствующими языковые файлами LT.
3. В каждом таком файле перебираются все секции, и в каждой секции перебираются ключи. Отсутствующие в файле замен игнорируются.
4. Имеющиеся в файле замен ключи сравниваются на идентичность. Одинаковые значения игнорируются.
5. Вписанные в файл замен, но не найденные в языковых файлах строки также игнорируются.
6. Оставшееся обновляется из файла замен в языковой файл LT.


Что входит в тестовый дистрибутив:
- собственно exe-файл
- демонстрационный файл замен
- полосочка, выдранная из splash-скрина LeaderTask для придания знакомого оформления  (ILoveLeaderTask)

Файл настроек создастся после того, как Вы укажете программе путь к папке, содержащей LeaderTask.exe

Интерфейс программы прост и понятен, и ведет пользователя по шагам к успеху буквально за ручку.

За трансляцию демо-текста для секции [Ukrainian.ini] отдельное спасибо yusl  *az*

Как говорится, прошу тестировать, любить и пользовать  8)

11
Источник в данном случае - плагин. Но мало ли какая ситуация приведет к появлению большого числа окон, так что в баги общие.

Исходные: база с подключенными плагинами (в т.ч. тестовый, выводящий сообщения об изменении той или иной задачи).
Действие: зачистил категорию (около 100 задач), стерев все подчинения (т.е., все эти задачи попали в ранее пустые "Входящие").
Результат: до сих пор (а прошло уже несколько минут) справа в изобилии висят бесчисленные окошки "Задача изменена", тормозит как набор текста в окне, там и мышиный курсор (чего на своей текущей конфигурации отродясь не помню).



Внизу по скрину особо не заметно, но их там друг под другом просто дофигищща :) - при открытии QuickLaunch они очень шустро перемигиваются одно поверх другого, стремясь оказаться выше меню панели.

P.S.: Пока затягивал скрин в граф редактор - окна разом исчезли. Может, случайно щелкнуть правой кнопкой по иконке Скайпа помогло... *bm*

В общем, хотя такое количество окон при нормальной работе - маразм, но, как видим, возникновение такой ситуации вполне вероятно.

Может, не выводить одновременно окон больше, чем читаемо? И выдавать пачками поэкранно, что ли... или во второй ряд хотя бы. И контролировать время их существования при таком объеме - независимо от настроек, однозначно.

12
Собственно, дубль сообщения отсюда, вынесенный в самостоятельную тему, поскольку вопросы обработки командной строки возникают на форуме регулярно.


Предлагаю развить управление объектами LT из комстроки в следующем направлении:

ta - добавить задачу
td - удалить задачу (выводится окно с запросом на удаление, +дополнительное окно в случае наличия подзадач)

na - добавить заметку
nd - удалить заметку (выводится окно с запросом на удаление, +дополнительное окно в случае наличия подзадач)

pa - добавить проект
pd - удалить проект (выводится окно с запросом на удаление, +дополнительное - если проект не пуст)

ca - добавить категорию
cd  - удалить категорию (выводится окно с запросом на удаление, +дополнительное - если категория не пуста)

ka - добавить контакт
kd - удалить контакт (выводится окно с запросом на удаление, +дополнительное окно, если контакт задействован в задачах)

Сокращения означают: ta == task add, td == task del, na == note add, nd == note del, и т.д.
А то add_planning?, конечно, красиво, но длинновато для набора :)

Соответственно, комстрока должна позволять указывать дополнительные параметры. Например:

lt na{Моя заметка для категории База знаний} c{База знаний} (кстати, если категории нет - она создается?)

А чтобы не париться с настройкой алиаса lt в каждой конкретной системе, можно и EXE-файл официально переименовать
с LeaderTask.exe на lt.exe, благо это сочетание все еще счастливо никем не занято.

13
Что-то вот в запасной базе (где у меня куча плагинов натолкана) обнаружилось: раскрываю-закрываю ветку подзадач (щелкаю в "плюсик" и "минус") - плагины орут, что корневая задача изменена.

А ведь я ничего с ней не делаю - только разворачиваю и сворачиваю список подзадач.

То же самое происходит при перемещении задач вверх-вниз при отключенной сортировке. Событие возникает для обеих задач, меняющихся местами.

Имхо, такого быть не должно по двум причинам:
1. Задачи не изменились. Изменилось состояние дерева - а это совсем другое событие.
2. Плагины, которые должны отлавливать изменения в задачах, будут без толку тормозить работу LT, срабатывая вхолостую.
А ведь мало ли насколько дотошным и неоптимизированным будет этот условный плагин - огорчение пользователя запросто может превысить его удовольствие.

14
Открываем окно предварительного просмотра. Жмем любую стрелку - получаем фокус на панели (точнее, на кнопке "Печать"). Двигаем стрелками, выбираем кнопку "Следующая страница", жмем Enter.

На следующую страницу попали, а вот панель фокус больше не получает. Непринципиально, но немного огорчает.

15
Выпало внеплановое время, посему внеплановый набросок.

По факту работают только генерация пароля и оценка устойчивости к взлому. Остальное - размышления о внешнем виде.

Хранилище и настройки - имитация поведения (не сохраняет изменения).

Еще не решил, использовать собственное шифрование или через системных криптопровайдеров (во втором случае больше заморочек с настройками, ниже коэффициент портабельности, но зато шире выбор поставщиков шифрования без изменения самого плагина).

Это эксперимент еще и с переводом API на другой язык, плюс первый плагин с несколькими собственными окнами сразу, поэтому любые сообщения о багах полезны вдвойне.

Приложенные файлы:
Storage.ltp - эскиз интерфейса и настроек. Копируется в папку LeaderTask\Plugins и подхватывается как плагин.
Store.exe - самостоятельная программа-тест контейнера. Создает, шифрует, сохраняет, открывает и расшифровывает фрагмент текста.

Страницы: [1] 2