load($layoutid)) { error_output( 'Could not load layout'); } $recipe = new $recipe(); if (!$recipe->generate()) { error_output( 'Could not generate recipe'); } if (!$recipe->saveToLayoutWithID( $layoutid )) { error_output( 'Could not save generated recipe to layout'); } $courseid = $layout->course; $controller_context = get_context_instance( CONTEXT_MODULE, $layout->controllerid); if (!has_capability('mod/sloodle:uselayouts', $controller_context)) { error_output( 'Access denied'); } $controllerid = $layout->controllerid; $rezzeruuid = $_REQUEST['rezzeruuid']; $addedentries = array(); foreach($layout->get_entries() as $layoutentry) { $config = SloodleObjectConfig::ForObjectName($layoutentry->name); $modtitle = $layoutentry->get_course_module_title(); if (!$modtitle) { $modtitle = ''; } ob_start(); $element_id = print_rezzable_item_li( $layoutentry, $courseid, $controllerid, $layout, false); $html_list_item = ob_get_clean(); ob_start(); $element_id = print_config_form( $layoutentry, $config, $courseid, $controllerid, $layoutid, $config->group, $rezzeruuid); $edit_object_form = ob_get_clean(); $addedentries[] = array( 'objectgroup' => $config->group, 'objectgrouptext' => get_string('objectgroup:'.$config->group, 'sloodle'), 'objecttypelinkable' => $config->type_for_link(), 'objectname' => preg_replace('/SLOODLE\s/', '', $layoutentry->name), 'moduletitle' => $modtitle, 'layoutid' => $layoutid, 'layoutentryid' => $layoutentry->id, 'html_list_item' => $html_list_item, 'edit_object_form' => $edit_object_form ); }; $content = array( 'result' => 'generated', 'layoutid' => $layoutid, 'addedentries' => $addedentries, ); print json_encode($content); exit; function error_output($error) { $content = array( 'result' => 'failed', 'error' => $error, ); print json_encode($content); exit; } ?>