getPath(); // load template content $absolutePath = $template->getPathToTemplate(); $content = file_get_contents($absolutePath); return view('admin.templates.edit', [ 'template' => $template, 'templateContent' => $content, 'isWritable' => is_writable(dirname($absolutePath)), 'path' => $path, ]); } /** * Save meta information about template and edited content * * @param EditTemplateRequest $request * @param $templateId * * @return \Illuminate\Http\RedirectResponse */ public function postEdit(EditTemplateRequest $request, $templateId) { // find template $template = Template::findOrFail($templateId); // setup meta information $template->name = $request->name; if ($request->description) { $template->description = $request->description; } // save meta information into database $template->save(); // try to save content return $this->saveContent($template, $request); } /** * Save physical content of given template * * @param Template $template * @param EditTemplateRequest $request * * @return \Illuminate\Http\RedirectResponse */ private function saveContent(Template $template, EditTemplateRequest $request) { // get templates with paths $originalTemplate = $template->getPathToTemplate(); $customTemplate = $template->getPathToTemplate(Template::CUSTOM_EDIT_DIRECTORY); // get paths $originalDir = dirname($originalTemplate); $customDir = dirname($customTemplate); // try to save content if (!is_writable($customDir) && !is_writable($originalDir)) { return redirect() ->route('templates.edit', ['id' => $request->id]) ->withInput() ->with('error', trans('admin/templates.cannotWriteContent')); } // save new content only if something was changed if ($this->isContentDifferent($originalTemplate, $customTemplate, $request->templateContent)) { // create directory for custom updates if (!is_dir($customDir)) { File::makeDirectory($customDir); } // make copy of existing template (if exists) $this->backupTemplates($customTemplate); // save content File::put($customTemplate, $request->templateContent); } return redirect() ->route('templates.overview', ['id' => $template->path]) ->with('success', trans('admin/templates.editSuccessfull')); } /** * Get last "revision" of edited template. * * Template changes are not discarded, however new file is created. Last template is renamed to *