0 Пользователей и 1 Гость просматривают эту тему.
  • 548 Ответов
  • 22991 Просмотров
*

mila_serdnaya

  • Захожу иногда
  • 432
  • 3 / 0
Re: Создание папок из фронтенда
« Ответ #480 : 12.11.2015, 01:52:45 »
Протестировали. Сборник удаляется, а вот материал, который в нём содержится - нет. Возникает такое вот сообщение:
Предупреждение
Удаление не допускается


Вот код метода delete compilationform.php, который мы сейчас имеем:
Спойлер
[свернуть]
*

robert

  • Живу я здесь
  • 4974
  • 457 / 20
Re: Создание папок из фронтенда
« Ответ #481 : 12.11.2015, 09:02:00 »
У вас нет права на удаление материалов.
Модель ContentModelArticle лучше подключить прямо перед удалением материалов
Спойлер
[свернуть]
Не будь паразитом, сделай что-нибудь самостоятельно!
*

b2z

  • Глобальный модератор
  • 7290
  • 778 / 0
  • Разраблю понемногу
Re: Создание папок из фронтенда
« Ответ #482 : 12.11.2015, 09:41:56 »
Я предсказывал эти проблемы. b2z, напишите ей нормально полностью функцию удаления, а то топик грозит побить мой рекорд (помните разработку импорта XML? на 505 постов...)
Нифига себе, вы новичку сразу подсунули FOREIGN KEY? Но выборка вроде осуществляется перед удалением, если я правильно помню.

P.S. Еще и CONSTRAINT.
Чего вы так боитесь внешних ключей? ;) Они значительно сокращают написание кода, просто нужно придерживаться определенной логики при удалении. О чём я уже писал и что было сделано - сначала выборка материалов ;)

P.S.
Внешние ключи - это благо. Например, в одном компоненте у меня три таблицы связаны с родительской записью. И у меня не болит голова при удалении родителя - я знаю, что в связанных таблицах все удалится автоматом. А если нет, то БД выкинет ошибку.
*

AlekVolsk

  • Гуру
  • 6915
  • 415 / 4
Re: Создание папок из фронтенда
« Ответ #483 : 12.11.2015, 09:50:57 »
Так я не против ключей, но новичку ее уровня это было давать слишком рано.
*

b2z

  • Глобальный модератор
  • 7290
  • 778 / 0
  • Разраблю понемногу
Re: Создание папок из фронтенда
« Ответ #484 : 12.11.2015, 11:33:42 »
Так я не против ключей, но новичку ее уровня это было давать слишком рано.
А новичок даже и знать о них не будет. Это все на уровне БД ;)
*

mila_serdnaya

  • Захожу иногда
  • 432
  • 3 / 0
Re: Создание папок из фронтенда
« Ответ #485 : 12.11.2015, 20:20:33 »
Мы подключили Модель ContentModelArticle прямо перед удалением материалов так, как нам подсказывает автор robert, но ошибка по-прежнему возникает:
Предупреждение
Удаление не допускается
.
« Последнее редактирование: 12.11.2015, 20:23:54 от mila_serdnaya »
*

b2z

  • Глобальный модератор
  • 7290
  • 778 / 0
  • Разраблю понемногу
Re: Создание папок из фронтенда
« Ответ #486 : 12.11.2015, 20:34:32 »
А если убрать

Код: php-brief
if (JFactory::getUser()->authorise('core.delete','com_chmos.compilation.'.$id)!==true){
throw new Exception(403, JText::_('JERROR_ALERTNOAUTHOR'));
}
*

robert

  • Живу я здесь
  • 4974
  • 457 / 20
Re: Создание папок из фронтенда
« Ответ #487 : 12.11.2015, 20:59:30 »
Сборник у нее удаляется, это com_content. mila_serdnaya, вы залогинились на сайте как администратор или автор?
У вас нет права на удаление материалов.
Не будь паразитом, сделай что-нибудь самостоятельно!
*

mila_serdnaya

  • Захожу иногда
  • 432
  • 3 / 0
Re: Создание папок из фронтенда
« Ответ #488 : 12.11.2015, 21:12:47 »
robert, как администратор.
Сейчас попробуем удалить строку, о которой говорит автор b2z, - может, что-то изменится...
*

mila_serdnaya

  • Захожу иногда
  • 432
  • 3 / 0
Re: Создание папок из фронтенда
« Ответ #489 : 12.11.2015, 21:22:35 »
Строку, о которой сказал автор b2z, на всякий случай удалили, - результат такой же. Сборник удаляется, а материал, который в нём - нет.
Та же ошибка:
Предупреждение
Удаление не допускается.


Мы тоже думаем, что это com_content нам не разрешает удалять материалы. Это означает, что нужно править какие-то файлы com_content?
*

AlekVolsk

  • Гуру
  • 6915
  • 415 / 4
Re: Создание папок из фронтенда
« Ответ #490 : 12.11.2015, 21:48:01 »
Покажите скрины: общие права на com_content и права конкретноо материала, который отказывается удаляться.
*

mila_serdnaya

  • Захожу иногда
  • 432
  • 3 / 0
Re: Создание папок из фронтенда
« Ответ #491 : 12.11.2015, 21:52:37 »
Вот общие права для зарегистрированных пользователей.
*

mila_serdnaya

  • Захожу иногда
  • 432
  • 3 / 0
Re: Создание папок из фронтенда
« Ответ #492 : 12.11.2015, 21:55:29 »
Это настройки прав на материалы для зарегистрированных пользователей.
*

mila_serdnaya

  • Захожу иногда
  • 432
  • 3 / 0
Re: Создание папок из фронтенда
« Ответ #493 : 12.11.2015, 22:02:57 »
AlekVolsk, мы ещё ни разу не сталкивались с понятием "права конкретного материала"...
Вот, кажется, нашли.
*

robert

  • Живу я здесь
  • 4974
  • 457 / 20
Re: Создание папок из фронтенда
« Ответ #494 : 12.11.2015, 22:04:47 »
Еще найдите права категории, материал которой не удаляется.
Не будь паразитом, сделай что-нибудь самостоятельно!
*

mila_serdnaya

  • Захожу иногда
  • 432
  • 3 / 0
Re: Создание папок из фронтенда
« Ответ #495 : 12.11.2015, 22:05:57 »
Хотим добавить, что мы пока что заходим от имени администратора - и материал всё равно не удаляется. А у администратора ведь прав больше, чем у зарегистрированного пользователя. Он же считай что бог на сайте.
*

robert

  • Живу я здесь
  • 4974
  • 457 / 20
Re: Создание папок из фронтенда
« Ответ #496 : 12.11.2015, 22:06:55 »
Хотим добавить, что мы пока что заходим от имени администратора - и материал всё равно не удаляется. А у администратора ведь прав больше, чем у зарегистрированного пользователя. Он же считай что бог на сайте.
То есть, суперадминистратор?
Не будь паразитом, сделай что-нибудь самостоятельно!
*

mila_serdnaya

  • Захожу иногда
  • 432
  • 3 / 0
Re: Создание папок из фронтенда
« Ответ #497 : 12.11.2015, 22:10:55 »
Вот настройки прав категории, материал который не хочет удаляться. Категория называется "Без категории".
*

mila_serdnaya

  • Захожу иногда
  • 432
  • 3 / 0
Re: Создание папок из фронтенда
« Ответ #498 : 12.11.2015, 22:11:53 »
robert, да, суперадминистратор. Мы поэтому и в недоумении.
*

robert

  • Живу я здесь
  • 4974
  • 457 / 20
Re: Создание папок из фронтенда
« Ответ #499 : 12.11.2015, 22:50:16 »
Понятно, com_content не дает удалять материалы, если их предварительно не помещать в корзину. ОК, действуем напрямую: вот новый код функции delete()
Спойлер
[свернуть]
Не будь паразитом, сделай что-нибудь самостоятельно!
*

mila_serdnaya

  • Захожу иногда
  • 432
  • 3 / 0
Re: Создание папок из фронтенда
« Ответ #500 : 12.11.2015, 23:00:58 »
Вставили код, пошли удалять сборник с материалом, - пишет ошибку в этой строке:$query->where('id IN('.implode(',',$contentIds).')';
*

robert

  • Живу я здесь
  • 4974
  • 457 / 20
Re: Создание папок из фронтенда
« Ответ #501 : 12.11.2015, 23:11:01 »
А так
Спойлер
[свернуть]
?
Если будет ошибка - приведите ее полностью.
Не будь паразитом, сделай что-нибудь самостоятельно!
*

mila_serdnaya

  • Захожу иногда
  • 432
  • 3 / 0
Re: Создание папок из фронтенда
« Ответ #502 : 12.11.2015, 23:17:39 »
robert, всё заработало!
Мы сейчас не можем отписаться нормально - убегаем на пробежку. Вернёмся - всё подробно напишем!
СПАСИБО! =)
*

robert

  • Живу я здесь
  • 4974
  • 457 / 20
Re: Создание папок из фронтенда
« Ответ #503 : 12.11.2015, 23:31:59 »
ОК. Но имейте в виду, что на данный момент любой, кто видит кнопку "Удалить", можеть совершать это действие.
Не будь паразитом, сделай что-нибудь самостоятельно!
*

b2z

  • Глобальный модератор
  • 7290
  • 778 / 0
  • Разраблю понемногу
Re: Создание папок из фронтенда
« Ответ #504 : 13.11.2015, 01:17:21 »
Напрямую нельзя! Останется куча мусора в таблице #_assets
*

mila_serdnaya

  • Захожу иногда
  • 432
  • 3 / 0
Re: Создание папок из фронтенда
« Ответ #505 : 13.11.2015, 02:30:02 »
b2z, тогда получается, что в этом куске кода...

if ($table->delete($id)===true){
$query=$db->getQuery(true);
$query
->delete($db->quoteName('#__content'))
->where($db->quoteName('id').' IN('.implode(',',$contentIds).')');
$db->setQuery($query);
$db->execute();

...нужно дополнительно прописывать удаление из таблицы #_assets?
*

robert

  • Живу я здесь
  • 4974
  • 457 / 20
Re: Создание папок из фронтенда
« Ответ #506 : 13.11.2015, 08:41:50 »
Напрямую нельзя! Останется куча мусора в таблице #_assets
Да, совсем забыл об этом.
mila_serdnaya, тогда измените статус удаляемых материалов на -2 и потом удаляйте через модель.
Не будь паразитом, сделай что-нибудь самостоятельно!
*

b2z

  • Глобальный модератор
  • 7290
  • 778 / 0
  • Разраблю понемногу
Re: Создание папок из фронтенда
« Ответ #507 : 13.11.2015, 10:00:14 »
Да, совсем забыл об этом.
mila_serdnaya, тогда измените статус удаляемых материалов на -2 и потом удаляйте через модель.

Вставляем код перед:
Код: php
JModelLegacy::addIncludePath(JPATH_ADMINISTRATOR.'/components/com_content/models','ContentModel');

Код: php
// Устанавливаем состояние в -2 (в корзине)
$query
->update($db->quoteName('#__content'))
->set($db->quoteName('state'). '= -2')
->where('id IN(' . implode(',', $contentIds). ')';
$db->setQuery($query)
->execute();
*

mila_serdnaya

  • Захожу иногда
  • 432
  • 3 / 0
Re: Создание папок из фронтенда
« Ответ #508 : 13.11.2015, 10:21:27 »
b2z, мы вернули тот код, который содержал JModelLegacy.
Вставили тот код, который Вы написали.
Вот что у нас получилось:
Спойлер
[свернуть]

Пошли удалять - выдаёт ошибку:
Parse error: syntax error, unexpected ';' in Z:\home\starting\www\components\com_chmos\models\compilationform.php on line 306
Убрали из строки, на которую указывает ошибка, - ';'. Вот эта строка (было): ->where('id IN(' . implode(',', $contentIds). ')';
Вот эта строка (стало): ->where('id IN(' . implode(',', $contentIds). ')'

Появилась другая ошибка: Parse error: syntax error, unexpected T_STRING in Z:\home\starting\www\components\com_chmos\models\compilationform.php on line 307
Вот строка, на которую указывает ошибка: db->setQuery($query)
« Последнее редактирование: 13.11.2015, 10:29:13 от mila_serdnaya »
*

robert

  • Живу я здесь
  • 4974
  • 457 / 20
Re: Создание папок из фронтенда
« Ответ #509 : 13.11.2015, 10:51:19 »
Забыли закрыть скобку.
Код: php-brief
->where('id IN(' . implode(',', $contentIds). ')');
И, mila_serdnaya, если пишет "unexpected", то это не значит, что нужно удалять.
Не будь паразитом, сделай что-нибудь самостоятельно!
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Создание релиза компонента средствами GitHub

Автор SkyAn

Ответов: 4
Просмотров: 726
Последний ответ 01.11.2019, 17:42:04
от Septdir
[Решено] Создание контент плагина

Автор IvanTopor

Ответов: 4
Просмотров: 1259
Последний ответ 26.02.2016, 13:10:37
от IvanTopor
Создание динамических полей в своем компоненте

Автор NeuroZ

Ответов: 14
Просмотров: 1465
Последний ответ 18.08.2015, 11:17:59
от b2z
Создание таблиц средствами компонента

Автор spirit1086

Ответов: 3
Просмотров: 1044
Последний ответ 18.08.2015, 10:17:09
от spirit1086
Создание изображений PHP и GD

Автор vita1971

Ответов: 6
Просмотров: 929
Последний ответ 10.05.2015, 13:10:38
от vita1971