«Attacher Freelance» — прикрепление файлов

«Attacher Freelance» — прикрепление файлов

[Всего голосов: 1    Средний: 5/5]

«AttacherFreelance» — Плагин для «сборка «Фриланс-Биржа»». ⭐ С помощью которого можно загружать файлы, изображения, и прикреплять к публикациям основных модулей фриланс-биржи: маркет, проекты, портфолио.
«AttacherFreelance» работает на основе API плагина attacher и является мостиком для взаимодействия с модулями projects (проекты биржи фриланса), market (витрина услуг и магазин цифровых товаров), folio (портфолио фрилансеров).
Для работы плагина требуется установленный плагин «Attacher».
Установка рекомендуется только на чистую сборку, то есть новый сайт.
Не устанавливать наряду с плагинами «Mavatars» и «MAvatars for freelance2» или другими расширениями (плагинами), выполняющими эти функциональные задачи. Конфликты и риски не исключены — всё под свою отвтественность!

Attacherfreelance — плагин для фриланс-биржи на Cotonti Siena
Code=attacherfreelance
Name=Attacherfreelance
Category=files-media
Description=Attaching images and files for freelance (projects,market,folio)
Version=1.0.0.beta
Date=2019-01-26
Author=Roffun
Copyright=copyright (c) CmsCot.net, 2019 — TO THIS DAY & ABOVE. All rights reserved.
Notes=BSD License, https://github.com/Roffun/attacherfreelance-plugin-cotonti/blob/master/LICENSE
Requires_plugins=attacher

Установка плагина «AttacherFreelance»

— Скачать архив, распаковать. Переименовать папку с плагином в attacherfreelance. Её нужно разместить в корневой каталог plugins, где все плагины находятся.
(Плагин «AttacherFreelance» уже включен в состав базовой сборки.!!!)
— Перейти в «Управление сайтом / Расширения / Загрузка изображений и файлов фриланс» и установить с помощью интерфейса (плагин attacher уже должен быть установлен).
На этом процесс установки можно считать завершенным.
Остается подключить плагин в шаблонах, — добавить код в соответствующие шаблоны модулей фриланс-биржи скина вашего сайта.

Модуль projects сборки «Фриланс-Биржа»

Для прикрепления файлов к создаваемому проекту.

В projects.add.tpl:

<!-- IF {PHP|cot_auth('plug', 'attacher', 'W')} -->
  {PHP.L.Files}:
  {PHP|att_filebox('projects', 0)}
<!-- ENDIF -->

 

Для прикрепления файлов к редактируемому проекту.

В projects.edit.tpl:

<!-- IF {PHP|cot_auth('plug', 'attacher', 'W')} -->
  {PHP.L.Files}:
  {PRJEDIT_FORM_ID|att_filebox('projects', $this)}
<!-- ENDIF -->

 

Предпросмотр списка прикрепленных файлов перед публикацией проекта.

В projects.preview.tpl:

<!-- IF {PRJ_ID|att_count('projects',$this)} > 0 -->
<div data-att-display="all">
    <h3>{PHP.L.att_attachments}</h3>
    {PRJ_ID|att_display('projects',$this,'','attacher.display','all')}
</div>
<!-- ENDIF -->

 

Вывод прикрепленных файлов на странице проекта:

В projects.tpl:

<!-- IF {PRJ_ID|att_count('projects',$this)} > 0 -->
<div data-att-display="all">
    <h3>{PHP.L.att_attachments}</h3>
    {PRJ_ID|att_display('projects',$this,'','attacher.display','all')}
</div>
<!-- ENDIF -->

 

Вывод изображений в списках (категориях) проектов:

В projects.list.tpl:

<!-- IF {PRJ_ROW_ID|att_count('projects',$this,'','images')} > 0 -->
<div>
    <a href="{PRJ_ROW_URL}" title="{PRJ_ROW_SHORTTITLE}">
        <img src="{PRJ_ROW_ID|att_get('projects',$this,'')|att_thumb($this,200,160,'crop',false)}" alt="{PRJ_ROW_SHORTTITLE}">
    </a>
</div>
<!-- ENDIF -->

 

Вывод изображений в списках проектов на главной:

В projects.index.tpl:

<!-- IF {PRJ_ROW_ID|att_count('projects',$this,'','images')} > 0 -->
<div>
    <a href="{PRJ_ROW_URL}" title="{PRJ_ROW_SHORTTITLE}">
        <img src="{PRJ_ROW_ID|att_get('projects',$this,'')|att_thumb($this,200,160,'crop',false)}" alt="{PRJ_ROW_SHORTTITLE}">
    </a>
</div>
<!-- ENDIF -->

 

Вывод изображений в списках проектов в профиле:

В projects.userdetails.tpl:

<!-- IF {PRJ_ROW_ID|att_count('projects',$this,'','images')} > 0 -->
<div>
    <a href="{PRJ_ROW_URL}" title="{PRJ_ROW_SHORTTITLE}">
        <img src="{PRJ_ROW_ID|att_get('projects',$this,'')|att_thumb($this,200,160,'crop',false)}" alt="{PRJ_ROW_SHORTTITLE}">
    </a>
</div>
<!-- ENDIF -->

 

Вывод формы прикрепления файлов для исполнителя и заказчика в заявках проекта.

В projects.offers.tpl перед:

<!-- BEGIN: PROJECTFORPRO -->
<div class="alert alert-warning">{PHP.L.paypro_warning_onlyforpro}</div>
<!-- END: PROJECTFORPRO -->

Добавить:

<!-- IF {PHP|cot_auth('plug', 'attacher', 'W')} -->
{PHP.item.item_id|att_performer_attach($this,'all',2)}
<!-- ENDIF -->

Эта конструкция выведет форму прикрепления файлов, видимую только если:

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

Так как форма предназначена для прикрепления файлов, видимых только заказчику и исполнителю, они могут оба видеть всё что прикреплено в форму (если условие 1), могут удалять свои файлы, но не могут удалить файлы друг друга. Это подстраховка для обеих сторон.

Админ сайта видит форму и файлы при возникновении любого из перечисленных условий, и имеет права на удаление любого из них. При добавлении конструкции в шаблон темы, второй и третий параметр — это настройка типов файлов и количества, разрешенных для прикрепления. Так как функция att_performer_attach() — это обертка для функции att_filebox(), для более детального понимания параметров 2 и 3 смотрите описание $type, $limit для att_filebox().

p.s. Плагин attacher и attacherfreelance работают по принципу API, и не знают, где в какой момент, какой модуль или плагин их использует. Они лишь выводят форму загрузки или уже загруженное содержимое, ничего не зная о фрилансерах, работодателях, статусах и прочем. Применяют только разрешения указанные для них.

При интеграции в свои расширения нужно самостоятельно позаботиться об этом. В качестве примера такой функции — att_performer_attach(), которая обрабатывает логику вывода формы, но не является частью API. Она анализирует данные на основе переданного параметра, и создает условия для вывода формы att_filebox() по конкретным условиям.

Модуль market freelance

Для прикрепления файлов к добавляемому товару (не самого товара!).

В шаблон market.add.tpl:

<!-- IF {PHP|cot_auth('plug', 'attacher', 'W')} -->
  {PHP.L.Files}:
  {PHP|att_filebox('market', 0)}
<!-- ENDIF -->

 

 

 

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *