MODX Revo - cоздание ресурсов из фронтэнд
Дорогие друзья, здравствуйте, очень надеюсь на вашу поддержку, разрешить на первый взгляд вроде бы простую задачу. Для информации: новичек в MODX, на данный момент работаю с MODX Revolution 2.3.2-pl (traditional). Ситуация такая, стараюсь реализовать функционал, добавления ресурсов пользователями из фронтэнд НЕОГРАНИЧЕННОЙ ВЛОЖЕННОСТИ. Что бы они сами могли создавать ресурс, и в него добавлять другие ресурсы, и так далее. Нашел сниппет в сети formit2resource и использую его в связке с FormIt.
Все вроде хорошо, но только до 2 уровня вложенности. Например:
РЕСУРС ОТЕЦ
Ресурс пользователя 1
Ресурс пользователя 1
Ресурс пользователя 2
Ресурс пользователя 2 И если попробовать добавить подресурс для ресурса 2 уровня, то он его просто перепишет и ничего не вложит. Как решить эту проблему? Как лучше сделать? Куда копать? Вот вызов формит: [[!FormIt?
&hooks=formit2resource,redirect
&redirectTo=[[*id]]
&template=15
]] Вот сама форма:
if (empty($doc)){ $doc = $modx->newObject('modResource'); $doc->set('createdby', $modx->user->get('id')); } else{ $doc->set('editedby', $modx->user->get('id')); }
$allFormFields = $hook->getValues(); foreach ($allFormFields as $field=>$value) {
if ($field !== 'spam' && $field !== 'resource_id'){ $doc->set($field, $value); } } $alias = $doc->cleanAlias($fields['pagetitle']); if($modx->getCount(modResource, array('alias'=>$alias))!= 0) { $count = 1; $newAlias = $alias; while($modx->getCount(modResource, array('alias'=>$newAlias))!= 0) { $newAlias = $alias; $newAlias .= '-' . $count; $count++; } $alias = $newAlias; } $doc->set('alias',$alias); $doc->set('template', $template); $doc->save();
foreach ($allFormFields as $field=>$value)
{
if (!empty($value) && $tv = $modx->getObject('modTemplateVar', array ('name'=>$field)))
{
/* handles checkboxes & multiple selects elements */
if (is_array($value)) {
$featureInsert = array();
while (list($featureValue, $featureItem) = each($value)) {
$featureInsert[count($featureInsert)] = $featureItem;
}
$value = implode('||',$featureInsert);
}
$tv->setValue($doc->get('id'), $value);
$tv->save();
}
}
$modx->cacheManager->refresh();
return true; Помогите пожалуйста друзья!