Giter Site home page Giter Site logo

casepress's People

Contributors

aiiddqd avatar asche98 avatar aurokk avatar bdmast avatar casepress avatar eshenko avatar evgrezanov avatar prudnikovmihail avatar sergeybiryukov avatar soulseekah avatar yumashev avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Forkers

aukc1970

casepress's Issues

Ссылки - для групп, для персон, для дел и для организаций

Ситуация

Часто бывает так, что надо в группе, у продукта, у дела или где то еще сохранять связанные ссылки. Например в группе по разработке сайта Системо хранить ссылки на Метрику, Вебмастер, Директ и т д. Все те ссылки которые быстро ведут на связанные учетные записи и инструменты под этот конкретный продукт.
Чтобы зайдя в группу по сайту Системо, тут же можно было перейти в Метрику и посмотреть показатели. Хорошо идет работа или нет?

Описание

Нужен виджет "Ссылки", который будет хранить их как тип комментария "url_list"

И выводить в виджете через шорткод post_url_list

По аналогии с тем как это сделано в группах ВКонтакте.
Можно добавить новые ссылки.
Можно поправить адрес ссылки и ее название.

Оптимизировать поиск при помощи post_content_filtered

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

Например телефон у персоны или организации. Или список участников у дел.

Мы не можем сохранить это в заголовок или в описание. Цитату для этого тоже не стоит использовать, тк она часто используется в шаблонах.

Потому остается поле post_content_filtered которое есть в таблице постов.

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

Что то типа этого:

//добавляет хук, который создает и генерирует поисковый кеш
function post_content_filtered_search_array_cp($data, $postarr){

 $search_array = array(); //обнуляем массив
 $search_array = apply_filter('search_array_post_filtered', $search_array, $data, $postarr); //включаем фильтр
 $search_array = array_unique($search_array); //уникализируем
 $search_str = implode(",", $search_array);
 $data['post_content_filtered'] = $search_str ; //пишем строку в поисковый кеш

  return $data;
}
add_filter('wp_insert_post_data', 'post_content_filtered_search_array_cp', 999, 2);

Далее добавить хук который включает поиск по этому полю по аналогии с поиском по ID
https://github.com/systemo-biz/casepress/blob/master/cp-includes/search-ext/search-ext.php#L7

Далее прописать 2-3 функции для кеширования того что есть: Почта персон и участники дел.
От и Кому для Дел.

Типа так:

//функция которая добавляет почту в поисковый кеш
function search_array_post_filtered_email_person($search_array, $data, $postarr){
  //получаем адрес email для персоны и помещаем в переменную $meta;

$search_array[] = $meta; //добавляем в массив данное

return $search_array;

} add_filter('search_array_post_filtered', 'search_array_post_filtered_email_person', 10, 3);

интеграция

удалить:
https://github.com/systemo-biz/casepress/blob/master/cp-includes/search-ext/cp_excerpt_search_and_cache.php

вместо него добавить файл post_content_filtered_search_cp.php

результат

В результате, система должна уметь записывать в это поле строку из ключевых слов, а при поиске выдавать результаты которые соответствуют запросу.
Например если я ввожу email, то система должна найти персону или организацию, у которой есть этот email
Если я ввожу фамилию, то система должна найти дела в которых есть этот участник.
Если я ввожу название организации то система должна найти дела и организации которые соответствуют этому названию.
Если я ввожу Договор то система должна найти все дела в категории Договор

Ошибка вызова функции acf_form_head() при добавлении персоны

При попытке просмотра созданной персоны выдает - Fatal error: Call to undefined function acf_form_head()

и при попытке добавить медиафайл на странице добавления персоны

консоль firefox Nightly выдает

  • ReferenceError: acf is not defined
  • TypeError: e is undefined - load-scripts.php?…:882

консоль Opera 28

  • Uncaught ReferenceError: acf is not defined
  • Uncaught TypeError: Cannot read property hasClass of undefined..... load-scripts.php?…:882

Добавить метабокс с данными персоны

  • поле Основной адрес почты email как текст и сохранять в мету как сейчас у нас настроено
  • поле Основной телефон как number и сохраняем в мету telephone. Проверяем чтобы были только цифры. Добавляем инструкцию "указание телефона без +"
  • поле "Дополнительные контактные данные" как поле текста (textarea)

выводим эти поля на странице персоны через хук the_content после описания списком.

Белый экран при активации плагина casepress

Свежая установка по шпаргалке http://new.casepress.org/?page_id=204 до пункта "Включить постоянные ссылки". Дальше картинок нет.

Wordpress v4.1
CasePress v20150109
Apache/2.2.22 (FreeBSD) PHP/5.2.17
Версия MySQL-клиента: 5.1.55

после активации плагина админка работает, а сам сайт выдает "белый экран". Принудительное отображение ошибок через .htaccess ничего не показывает.

Подскажите, куда копать.

Шорткод "Связи"

Шорткод типа [hookup]
hookup - переводится как сцепления

 Требования:

  • Выводит список связанных постов для текущего поста в виде button (class="btn btn-default btn-xs") http://getbootstrap.com/css/#buttons-sizes
  • Чек бокс "Добавить связи" - открывает текстовое поле для ввода
  • Если начинаем вводить текст, то система через AJAX пытается найти посты (по аналогии с тем как работает форма ссылок). Автоподстановка текста.
  • Если выбрали нужный пост, то по щелчку - добавляет сущность в список
  • Хранение ИД постов в мете cp_hookup
  • Если щелкаем по ссылке, то выводим поповер (http://getbootstrap.com/javascript/#popovers-examples) с двумя действиями: Перейти или Удалить
  • Пока что делаем отдельным плагином
  • Можем увидеть список связанных постов в виде кнопок, щелкнуть по любому и либо перейти, либо удалить
  • Можем щелкнуть по галочке "Добавить связи" и добавить любые доступные посты в ситеме через ввод части текста

При добавлении сотрудника и пользователя - нет прав на добавление дел

  • добавить права для роли "Участник" на редактирование и добавление записей (дела, объекты и т д)
  • проверить чтобы любой пользователь с правами Участник, мог править в том числе чужие записи.

делается через функции: add_cap
инструкция http://www.wpmayor.com/roles-capabilities-wordpress/

Добавить механизм настройки категорий дел

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

  1. Вывод опций на странице термина таксономии functions (категории дел)
  2. Создаем не публичный тип поста "Настройки процессов" (case_category_options). Он не должен нигде отображаться в консоли или на сайте. Должен быть скрыт.
  3. Для каждого термина таксономии должен быть связанный пост типа case_category_options
  4. Храним все опции как метаполя у поста
  5. Добавляем функцию get_case_category_options_id($term_id). Которая возвращает id поста связанного для термина. Добавляем описание в документацию на casepress.org
  6. Добавляем опцию "Автозаголовок". При ее включении заголовок должен скрываться и формироваться на основе шаблона. За основу можно взять механизм шаблона от сюда https://github.com/systemo-biz/forms-by-systemo/blob/master/includes/add_message_to_post.php#L46
  7. Опция "Ответственный по умолчанию". Если выбран, то при создании постов, автоматом выбирается ответственный из этого поля (если не был выбран в момент создания).

Добавить поле Родительская организация

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

  1. Добавить поле Родительская организация. Это нужно для холдинговых и зависимых структур.
  2. Если у организации есть родитель, то добавить секцию в контент, которая покажет ссылку на родителя
  3. Если у организации есть потомки, добавить секцию "Дочерние организации", которая выводит список потомков

Добавить метабокс с данными для Организаций

  • делаем отдельным php файлом в папке https://github.com/systemo-biz/casepress/tree/master/cp-includes/organizations
  • поле Основной телефон типа текст, храним в мете: telephone
  • поле Основной адрес электронной почты типа email и храним в поле email
  • поле Сайт типа текст и храним в мете site_url
  • Все эти поля выводим через хук the_content после описания списком.

Поля для Дел "От" и "Кому"

Для всех дел нужно добавить 2 поля:
От - персоны или организации (храним в мете from)
Кому - персоны или организации (храним в мете to)

Добавить на секции персон и организаций две секции:
Входящие дела - показываем все дела, в которых субъект указан как to
Исходящие дела - показываем все дела, в которых субъект указан как from

Эти поля должны быть сделаны по аналогии с полем Ответственный. Хранение через Select2.

Кнопка Сообщение на странице Персоны

Нужен некий аналог подобной кнопки Фейсбук. Когда заходишь на страницу человека, то одной кнопкой можешь отправить ему сообщение.

Но в нашем случае это вероятно придется делать с рядом особенностей:

  1. Кнопку пока расположить отдельным текстовым виджетом с шорткодом через сайдбар
  2. Генерация УРЛ кнопки должно идти как обычное добавление дела, но с указанием текущего пользователя в поле От, а тому кому пишем в поле Кому.
  3. В форме дела, надо прописать логику, чтобы было автозаполнение полей исходя из передаваемых данных в УРЛ
  4. Если в поле Кому - есть персона, а в поле Ответственный никого - то копируем персону из Кому в Ответственный.

Напоминание - контроль следующего шага

Во многих операциях важной штукой является не сам срок, а дата следующего шага.

  • пишем весь код отдельным плагином (потом мб интегрируем в ядро)
  • добавить страницу опций в раздел CasePress где добавить список чек боксов категорий дел для которых нужно это поле, плюс чекбокс "показывать это поле у дел без категории"
  • у дел рядом со сроком должно появиться аналогичное поле "Напоминание", показываем это поле только если есть соответствующая опция
  • при наступлении даты, добавляем коммент с уведомлением что наступила дата контрольной точки
  • шорткод, который выведет список дел с напоминаниями по датам: Прошедшие, Сегодня, Завтра, Планируемые

Редактирование заголовка и описания поста через AJAX

Пишем отдельным плагином.

  • Вывод после заголовка и после описания кнопку с иконкой правки glyphicon glyphicon-edit http://getbootstrap.com/components/#glyphicons
  • Кнопка появляется только если курсор наведен на соответствующий элемент
  • При щелчке по ней всплытие Popover http://getbootstrap.com/javascript/#popovers-examples
  • При нажатии на изменение заголовока подгружаем текстовое поле с текущим значением и кнопку "Сохранить". При сохранении обновляем post_title и возвращаем элементы обратно с новым значением.
  • При нажатии на изменение описания, подгружаем wp_editor с текущим значением и кнопку "Сохранить". При сохранении обновляем post_content и возвращаем изначальные элементы.
  • Все подгрузки и сохранения делаем посредством AJAX

Автокомментарий при выборе ответственного

При добавлении дела можно указать ответственного.

Если ответственный изменен, то добавить комментарий, в котором указать текст:

"@login назначен ответственным по делу"

Где @login это логин пользвателя персоны которая назначена ответственным.

Автообновление поискового кэша

сделан поисковый кеш #45

и в момент сохранения записи, кеш нормально записывается.

беда возникает там, где идет изменение зависимой записи.

например Дело, у него в кеш записывается контрагент из поля От или Адресат.
Предположим дело это Договор №123 с ООО "Карамба".
Записали и в кеш сохранилось название ООО "Карамба" и "Договор".
И теперь можно найти дело по фразе "договор карамба".
А завтра кто то зашел и в ООО "Карамба" изменил название на "Карамба ЗАО (Caramba)"

Логично предположить что теперь дело должно находиться по запросу caramba.
Но это не так, птм что обновление кеша происходит только в момент сохранения самой записи, а зависимые записи никак не учитываются.

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

Суть идеи заключается в том, что если мы смогли прописать механизм кеширования по какому либо запросу. Например https://github.com/systemo-biz/casepress/blob/master/cp-includes/search-ext/post-content-filtered-search-cp.php#L30

То тут же нам надо суметь прописать механизм обновления кеша по обратному запросу.

Пример:

  1. Мы прописали что в кеш дела идет заголовок записи ИД которой хранится в по От. Например это организация с названием "НКО Тико". Там есть условие которое говорит какие записи обновлять и по какому полю находить.
  2. Надо писать обратный механизм. Что если организация или персона обновится, то надо запускать обновления всех записей с такими условиями и ключами метаполей, в которых есть эта запись.

Еще:

  1. Начать надо с тех функций что уже прописаны в механизме
  2. Плюс добавить эту особенность в блог casepress.org

Улучшить работу выбора "подразделений" у дел

Сейчас у дел можно выбрать подразделения:
image

Но этого мало.
Нужно внести ряд правок:

  1. Подразделение должно стать первым полем выбора
  2. Оно должно показываться только в том случае, если в таксономии подразделений есть термины
  3. Это единственное поле которое должно стать обязательным
  4. Добавить опцию на страницу КейсПресс в консоли, которая позволит выбрать подразделение по умолчанию
  5. Если опция подразделения по умолчанию заполнена, то при создании дел всегда выбирать это подразделение первым

Админка или фронтэнд?

Вопрос до установки.

Ваша система работает в админке или во фронтэнде? В смысле экологично ли её установить на существующий блог, или лучше сделать отдельный wordpress только для casepress, потому что фронтэнд во всю будет задействован элементами системы?

Плавающая кнопка и форма добавления дела

 Кнопка

image

Форма

image

Прочее

  • Делать надо отдельным плагином.
  • Добавление через AJAX
  • После того как добавили данные, тут же отобразить ссылку с переходом на страницу дела

Перспектива

  • Зависимость от контекста, если находимся в категории дел, то добавление в ту же категорию.
  • Если находимся на странице подразделения, то добавление в то же подразделение.
  • Если на странице персоны, то назначение этой персоны ответственным.
  • В иных случаях добавление дела на самого себя.

Первая версия страницы планировщика

  • Пока делаем шорткодом и отдельным плагином (ссылку на плагин добавить в комменты к этой странице)
  • Секция "Просроченные дела", если есть, выводим первые 5 и возможность подгрузить еще, сортировка по сроку
  • Секция "Срочные дела", если есть, выводим первые 5 и возможность подгрузить еще, если есть, сортировка по сроку
  • Секция "Дела по приоритету", выводим дела в порядке приоритета (приоритет задаем в метаполе "cp_order_person[id]")
  • Дела по приоритету можно таскать посредством компонента https://github.com/johnny/jquery-sortable (пример https://github.com/systemo-biz/todo-comments-cp)
  • Сверху шорткода можно выбрать персону по которой будем показывать дела, если персона не выбрана, то показываем по текущей персоне

Ответственный по умолчанию для подразделения

Добавить поле "Ответственный по умолчанию" для термина таксономии Подразделения
И дать выбор одной из персон.

Пример добавления полей и хранения данных http://wpcraft.ru/rabotaem-s-metadannymi-terminov-taksonomij-v-wordpress/

Выбор персон делаем через Select2. Если нужен пример, то отправлю по запросу.

При связи дела и этого термина, если указан ответственный, то указывать ответственного у дела.

В целом тут 20-40 строк кода.

Переписать виджет связи персоны и пользователя в метабокс

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

  • при редактировании поста типа Персона - должен быть метабокс, где можно выбрать или добавить нового пользователя.
  • в метабоксе должно быть поле: email, если оно есть у персоны, то берется из меты email.
  • при сохранении поста связываем пользователя если такой есть, или добавляет нового если такого email нет и связываем.

Настройка Виджетов

расскажите подробней про настройку виджетов.

Не работает пример из шпаргалки.

При добавлении виджета cases.widget.user
в любую область, вырубается виджет навигации, сам widget.user тоже не отображается.

Доступ к комментам у объектов

Нужен список по которому будут показаны комментарии у объектов

  • эту логику пишем как отдельный плагин
  • объекты это тип поста который управляется плагином объектов https://github.com/systemo-biz/casepress-objects
  • все комментарии к объекту скрываются через хук wp_list_comments_args http://wp-kama.ru/function/wp_list_comments (например можно указать тип коммента как абракадабру и в этом случае ничего не будет выведено)
  • комменты отображаются только если текущий пользователь есть в списке доступа
  • список доступа редактируется в форме редактирования поста как отдельный метабокс

где css?

1.Поставил!!! Все понятно, хочу заняться украшательством, подскажите где css
public_html/wp-content/plugins/casepress-master/cp-includes
или он в теме
public_html/wp-content/themes/wpbss-master
2. И ещё вопросик, для дел стоит возможность комментирования, как её отключить

настройка темы

оригинальная тема
default
Ваша тема
cp
настройка виджетов в Вашей теме
default
Меня интересует меню в зелёной рамке
139

Создать хук для подключения полей к комментариям

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

Требования:

  • подключить конструкцию типа
      и внутрь добавить хук add_comment_action_cp
    • в качестве примера использования отдельным файлом добавить подключение поля закрытия дела и указания результата
      -- при комментарии пользователь может поставить галочку "Закрыть дело"
      -- при указании галочки плавно появляется поле "Укажите результат" и дропдаун выбора термина таксономии results
      -- при отправке формы коммента результат указывается у дела (дело это тип поста)
      -- если результат уже указан то галочка должна звучать как "Возобновить дело"
      -- если указана галочка возобновить дело, то результат у дела отменяется
    • добавить описание хука и пример в базу знаний http://casepress.org/kb/

    Изменить ключ таксономии Категории дела с functions на case_category

    Сейчас категория дел имеет ключ functions. Это было сделано по ошибке в начале.
    Более верным решением было бы case_category

    Но просто изменить не получится, надо будет перешерстить ядро и добавить механизм обновления данных при обновлении. Это довольно сложно, но проблема не критичная, потому оставляем в долгом ящике.

    Лента комментариев

    Список комментариев в которых ты задействован.

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

    Нужно этот список выводить.

    Уведомления по кейсам при наличии категории должны содержать соответствующую отметку

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

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

    Добавить метабокс Организация для Персон

    • делаем отдельным файлом php в папке Персоны
    • метабокс должен быть добавлен для типа поста Персона
    • поле типа Select2 с AJAX. Если организацию выбрали, то сохраняем ее ИД в мету cp_organization_id.
    • под полем сделать чекбокс "Добавить организацию"
    • если чек бокс отмечен, то показываем поле "Название организации" как текст и поле "Описание" как поле текста чтобы ввести заметку. При сохранении добавляем организацию в посты и записываем ее id в метаполе cp_organization_id
    • Предусмотреть возможность переноса данных из метаполя organization-cp-posts-array в новое метаполе. При переходе на новую версию.

    Типы доступа к делам

    Для дел можно обозначить логику распределения доступа по принципам Гугла:
    image

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

    • Чтение
    • Изменение
    • Управление доступом

    Recommend Projects

    • React photo React

      A declarative, efficient, and flexible JavaScript library for building user interfaces.

    • Vue.js photo Vue.js

      🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

    • Typescript photo Typescript

      TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

    • TensorFlow photo TensorFlow

      An Open Source Machine Learning Framework for Everyone

    • Django photo Django

      The Web framework for perfectionists with deadlines.

    • D3 photo D3

      Bring data to life with SVG, Canvas and HTML. 📊📈🎉

    Recommend Topics

    • javascript

      JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

    • web

      Some thing interesting about web. New door for the world.

    • server

      A server is a program made to process requests and deliver data to clients.

    • Machine learning

      Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

    • Game

      Some thing interesting about game, make everyone happy.

    Recommend Org

    • Facebook photo Facebook

      We are working to build community through open source technology. NB: members must have two-factor auth.

    • Microsoft photo Microsoft

      Open source projects and samples from Microsoft.

    • Google photo Google

      Google ❤️ Open Source for everyone.

    • D3 photo D3

      Data-Driven Documents codes.