module_settings = json_decode($content->module_settings); return Controller::VisitorsView($content->template, ['page' => $content]); } public static function getHistoryHandler() { return ContactFormHistory::class; } /** * Save module-specific values into database * * @param Content $content * @param Request $request * * @return mixed * @internal param Widget $widget */ public static function createNew(Content &$content, Request $request) { $settings = [ 'phone' => $request->phone, 'email' => $request->email, 'contactEmail' => $request->ContactEmail, 'subject' => $request->subject, 'companyName' => $request->companyName, 'address' => $request->address, 'gpsLat' => $request->gpsLat, 'gpsLng' => $request->gpsLng, ]; // save settings $content->module_settings = json_encode($settings); } /** * Method used for editing existing content page. * * Reason why it is separated from createNew() method is simple - we need to save history of changes. * * @param Content $content * @param Request $request * * @param $revisionID string ID of revision used * * @return int number of edited fields */ public static function edit(Content &$content, Request $request, $revisionID) { $fields = [ 'phone' => 'phone', 'email' => 'email', 'contactEmail' => 'contactEmail', 'companyName' => 'companyName', 'address' => 'address', 'gpsLat' => 'gpsLat', 'gpsLng' => 'gpsLng', 'subject' => 'subject' ]; // get data and try to save them $data = EditContent::getFields($request, $fields); list($revision, $changedColumns) = $content->updateWithHistory($fields, $data, $revisionID); // return amount of changed columns return $changedColumns; } public static function getModuleId() { $handler = config('contactform.handler'); $allModules = ModulesHandlerToId::getWithTranslations(); $moduleId = isset($allModules[$handler]) ? $allModules[$handler] : null; return $moduleId; } /** * Getter for section names in creating/editing content resource * * @return mixed */ public static function getExtendedFormSections() { $sections = parent::getExtendedFormSections(); $sections['content'] = trans('contactform::admin/content.content'); return $sections; } /** * Getter for views used in extended part of form for creating new content * * This method should return pairs . View is returned only as name in plain text * * @return array of views/templates/html codes divided into section */ public static function getExtendedFormInputsCreate() { return [ 'basicInfo' => 'contactform::admin.form.basicInfo', 'content' => 'contactform::admin.form.content', 'meta' => 'admin.content.formParts.metaInformation', 'appearance' => 'admin.content.formParts.appearance', 'publication' => 'admin.content.formParts.publicationSetup', 'files' => 'admin.content.formParts.files', ]; } public static function getExtendedFormInputsEdit() { return self::getExtendedFormInputsCreate(); } /** * Register admin menu (or multiple ones) * * This cannot be in ServiceProvider because Session is started at middleware. And ServiceProvider is called before * starting any middleware.. * * @param User $user model of logged user */ public static function registerAdminMenu(User $user) { // register links in admin menu $menu = \Menu::instance('mainMenu'); $submenu = $menu->whereTitle(trans('admin/mainMenu.contentPages')); $submenu->dropdown(trans('contactform::admin/adminMenu.contactForm'), function ($submenu) use ($user) { $submenu->route('content.new', trans('contactform::admin/adminMenu.new'), ['moduleId' => self::getModuleId()], 10, ['icon' => 'fa fa-plus']); $submenu->route('content.overview', trans('contactform::admin/adminMenu.overview'), ['moduleId' => self::getModuleId()], 20, ['icon' => 'fa fa-list']); // $submenu->route('emails.sent', trans('contactform::admin/adminMenu.sentMessages'), [], 30, ['icon' => 'fa fa-send']); }, 25, ['icon' => 'fa fa-envelope-o']); } /** * Does given module manage content? Or is it just module with widgets/something internal/something absolutely else? * * @return bool */ public static function managesContent() { return true; } /** * Install module * * @return mixed */ public static function install() { // TODO: Implement install() method. } /** * Load some extra data for content management form? * * @param Content $content * * @return mixed */ public static function loadExtraData(Content $content) { // nothing to do } }