function replace_content($beans, $content) { //Load content into DOM $c = HtmlPageCrawler::create($content); foreach ($beans as $area) { $cp = new Theme_Area_Processor($area); $content = $cp->render(); //Find the nodes matching this areas ids $node = $c->filter('[mvcl-edit="' . $area->area_name . '"]'); if ($cp->replace_content()) { $node->replaceWith($content); } else { $node->setInnerHtml($content); } if ($this->logged_in) { $node->setAttribute('data-contenteditable', 'true'); $node->setAttribute('data-area', $area->getID()); $node->setAttribute('data-type', $area->type); } else { $node->removeAttribute('mvcl-type'); } } $this->module_process($c); return $c->saveHTML(); }
function form(RedBeanPHP\OODBBean $page) { //Check if object is loaded //Load areas connected to this page $areas = $page->ownArea; //Load form html $view = new G2_TwigView('forms/page/page'); //Create processors $areasP = []; $data = []; foreach ($areas as $area) { $areaP = new Theme_Area_Processor($area); $areasP[$area->id] = $areaP; $data[$area->id] = $areaP->render(); } $view->areas = $areasP; $view->page = $page; $form = new G2_FormMagic($view->get_render()); if (!$form->is_posted()) { $form->set_data($data); } if ($form->is_posted()) { //Field Validate the content $data = $form->data(); foreach ($data as $area_id => $value) { $areasP[$area_id]->set_value($value); $message = $areasP[$area_id]->validate(); if ($message !== true) { $form->invalidate($area_id, $message); } } foreach ($form->get_uploaded_files() as $key => $file) { $areasP[$key]->set_value($file); $message = $areasP[$key]->validate(); if ($message !== true) { $form->invalidate($area_id, $message); } } } if ($form->is_posted() && $form->validate()) { $data = $form->data(); foreach ($data as $area_id => $value) { $areasP[$area_id]->set_value($value); $areasP[$area_id]->save(); } foreach ($form->get_uploaded_files() as $key => $file) { $areasP[$key]->set_value($file); $areasP[$key]->save(); } return true; } echo $form->parse(); }