Загрузка картинки в тикет
Тикет имеет TV параметр image
По этой методике ничего не получилось.
Как можно загрузить картинку с формы создания тикета пользователю? Подскажите пожалуйста.
По этой методике ничего не получилось.
Как можно загрузить картинку с формы создания тикета пользователю? Подскажите пожалуйста.
Комментарии: 2
Может что то не так делаю?
В плагине Tickets добавляем либо так —
<div class="form-block">
<form class="well" method="post" action="[[~[[*id]]]]" id="ticketForm">
<form method="post" enctype="multipart/form-data" action="[[~[[*id]]]]">
<div id="ticket-preview-placeholder"></div>
<div class="row">
<label for="parent">Выберите категорию тикета:<span>*</span></label>
<div class="sel">
<select name="parent">[[+sections]]</select>
</div>
<div class="ic-bug">
<div class="ic-bug-l">
[[+error.parent]]
</div></div></div>
<div class="row">
<label for="pagetitle">Введите заголовок<span>*</span></label>
<div class="inp">
<div class="inp-ins">
<input type="text" placeholder="[[%ticket_pagetitle]]" name="pagetitle" value="[[+pagetitle]]" maxlength="50"/>
</div>
</div>
<div class="ic-bug">
<div class="ic-bug-l">[[+error.pagetitle]]</div></div></div>
<div class="row">
<label for="pagetitle">Загрузите картинку<span>*</span></label>
<div>
<div>
<input type="file" name="image">
</div>
</div>
</div>
<div class="row">
<label for="content">Текст<span>*</span></label>
<span class="contact-left">
<textarea placeholder="[[%ticket_content]]" name="content" id="ticket-editor" cols="50" rows="5" >[[+content]]</textarea>
</span>
<div class="ic-bug">
<div class="ic-bug-l">
[[+error.content]]
</div></div></div>
<div class="row-hint">
Звездочкой (*) отмечены поля, обязательные для заполнения.
</div>
<input type="hidden" name="action" value="saveTicket" />
<input type="button" class="wrap-btn w94" value="[[%ticket_preview]]" onclick="Tickets.ticket.preview(this.form, this);return false;"/>
<input type="submit" class="wrap-btn w94" value="[[%ticket_save]]" />
<label class="checkbox"><input type="checkbox" name="published" value="1" [[+published:is=`1`:then=`checked`]] /> [[%ticket_publish]]</label>
</form><div class="ic-bug">
[[+error:notempty=`<div class="ic-bug-l">[[+error]]</div>`]]</div></div>
Такая Форма создания тикетаВ плагине Tickets добавляем либо так —
<?php
switch($modx->event->name) {
case 'OnManagerPageInit':
$cssFile = $modx->getOption('tickets.assets_url',null,$modx->getOption('assets_url').'components/tickets/').'css/mgr/tickets.css';
$modx->regClientCSS($cssFile);
break;
case 'OnSiteRefresh':
if ($modx->cacheManager->refresh(array('default/tickets' => array()))) {
$modx->log(modX::LOG_LEVEL_INFO, $modx->lexicon('refresh_default').': Tickets');
}
break;
case 'OnDocFormRender':
if ($resource->class_key == "TicketsSection") {
/* @var TicketsSection $resource */
$resource->set('syncsite', 0);
}
break;
case 'OnDocFormSave':
// Указываем путь, пробовал $modx->getOption('assets_url').'path/to/dir/';
// получается со слэшем вначале: /assets/images/.
$path = 'assets/images/';
if($mode == 'new'){ // Режим создания документа
if (!empty($_FILES)) { // Проверка на пустоту массива $_FILES
@mkdir($path, 0777, true); // Создаем папку для хранения изображений, с правами 0777, третий аргумент - рекурсивное создание папок.
foreach($_FILES as $k => $v) {
$name = $v['name'];
$size = $v['size'];
$tmp = $v['tmp_name'];
$ext = pathinfo($name, PATHINFO_EXTENSION); //получаем расширение файла
$hash = md5(time().$name.$size); // новое название файла
$uploadfile = $path.$hash.$ext; // объединяем в конечный путь к файлу
if (copy($tmp, $uploadfile)) { // копируем изображения из временной папки в нужное место
$resource->set('photo', $uploadfile);
$resource->save(); // Сохраняем объект.
}
}
}
} else {
//resource update
}
/* @var Ticket $resource */
if ($mode == 'new' && $resource->class_key == "Ticket") {
$modx->cacheManager->delete('tickets/latest.tickets');
}
/* @var TicketsSection $resource */
if ($mode == 'upd' && $resource->class_key == 'TicketsSection') {
if (method_exists($resource, 'clearCache')) {
$resource->clearCache();
}
}
break;
case 'OnWebPagePrerender':
$output = & $modx->resource->_output;
$output = str_replace(array('[',']'), array('[',']'), $output);
break;
case 'OnPageNotFound':
// It is working only with friendly urls enabled
$q = trim($_REQUEST['q']);
$matches = explode('/', $q);
$count = count($matches);
if ($count < 3) {return;}
$section = $matches[$count - 3];
$ticket = $matches[$count - 2];
// Redirect to requested page, when you moved ticket from one section to another
if ($modx->getCount('TicketsSection',array('class_key' => 'TicketsSection', 'alias' => $section, 'deleted' => 0, 'published' => 1))) {
if (preg_match('/^\d+$/', $ticket)) {
if ($modx->getCount('Ticket', array('id' => $ticket, 'published' => 1, 'deleted' => 0))) {
$url = $modx->makeUrl($ticket, '', '', 'full');
$modx->sendRedirect($url);
}
}
}
break;
case 'OnWebPageComplete':
$Tickets = $modx->getService('tickets');
$Tickets->logView($modx->resource->id);
break;
}
Либо в конце<?php
switch($modx->event->name) {
case 'OnManagerPageInit':
$cssFile = $modx->getOption('tickets.assets_url',null,$modx->getOption('assets_url').'components/tickets/').'css/mgr/tickets.css';
$modx->regClientCSS($cssFile);
break;
case 'OnSiteRefresh':
if ($modx->cacheManager->refresh(array('default/tickets' => array()))) {
$modx->log(modX::LOG_LEVEL_INFO, $modx->lexicon('refresh_default').': Tickets');
}
break;
case 'OnDocFormRender':
if ($resource->class_key == "TicketsSection") {
/* @var TicketsSection $resource */
$resource->set('syncsite', 0);
}
break;
case 'OnDocFormSave':
/* @var Ticket $resource */
if ($mode == 'new' && $resource->class_key == "Ticket") {
$modx->cacheManager->delete('tickets/latest.tickets');
}
/* @var TicketsSection $resource */
if ($mode == 'upd' && $resource->class_key == 'TicketsSection') {
if (method_exists($resource, 'clearCache')) {
$resource->clearCache();
}
}
break;
case 'OnWebPagePrerender':
$output = & $modx->resource->_output;
$output = str_replace(array('[',']'), array('[',']'), $output);
break;
case 'OnPageNotFound':
// It is working only with friendly urls enabled
$q = trim($_REQUEST['q']);
$matches = explode('/', $q);
$count = count($matches);
if ($count < 3) {return;}
$section = $matches[$count - 3];
$ticket = $matches[$count - 2];
// Redirect to requested page, when you moved ticket from one section to another
if ($modx->getCount('TicketsSection',array('class_key' => 'TicketsSection', 'alias' => $section, 'deleted' => 0, 'published' => 1))) {
if (preg_match('/^\d+$/', $ticket)) {
if ($modx->getCount('Ticket', array('id' => $ticket, 'published' => 1, 'deleted' => 0))) {
$url = $modx->makeUrl($ticket, '', '', 'full');
$modx->sendRedirect($url);
}
}
}
break;
case 'OnWebPageComplete':
$Tickets = $modx->getService('tickets');
$Tickets->logView($modx->resource->id);
break;
}
case 'OnDocFormSave':
// Указываем путь, пробовал $modx->getOption('assets_url').'path/to/dir/';
// получается со слэшем вначале: /assets/images/.
$path = 'assets/images/';
if($mode == 'new'){ // Режим создания документа
if (!empty($_FILES)) { // Проверка на пустоту массива $_FILES
@mkdir($path, 0777, true); // Создаем папку для хранения изображений, с правами 0777, третий аргумент - рекурсивное создание папок.
foreach($_FILES as $k => $v) {
$name = $v['name'];
$size = $v['size'];
$tmp = $v['tmp_name'];
$ext = pathinfo($name, PATHINFO_EXTENSION); //получаем расширение файла
$hash = md5(time().$name.$size); // новое название файла
$uploadfile = $path.$hash.$ext; // объединяем в конечный путь к файлу
if (copy($tmp, $uploadfile)) { // копируем изображения из временной папки в нужное место
$resource->set('photo', $uploadfile);
$resource->save(); // Сохраняем объект.
}
}
}
} else {
//resource update
}
Последнее выдает белый экран по всему сайту.
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.