add the option to have templates for newly created files

This commit is contained in:
Robin Appelman 2013-08-07 16:53:09 +02:00
parent fc332acf8a
commit 9321eceed6
3 changed files with 98 additions and 34 deletions

View File

@ -84,6 +84,10 @@ if($source) {
} }
} elseif (\OC\Files\Filesystem::touch($dir . '/' . $filename)) { } elseif (\OC\Files\Filesystem::touch($dir . '/' . $filename)) {
$meta = \OC\Files\Filesystem::getFileInfo($dir . '/' . $filename); $meta = \OC\Files\Filesystem::getFileInfo($dir . '/' . $filename);
$templateManager = OC_Helper::getFileTemplateManager();
if ($content = $templateManager->getTemplate($meta['mimetype'])) {
\OC\Files\Filesystem::file_put_contents($dir . '/' . $filename, $content);
}
$id = $meta['fileid']; $id = $meta['fileid'];
OCP\JSON::success(array("data" => array('content' => $content, 'id' => $id, 'mime' => $meta['mimetype']))); OCP\JSON::success(array("data" => array('content' => $content, 'id' => $id, 'mime' => $meta['mimetype'])));
exit(); exit();

View File

@ -0,0 +1,46 @@
<?php
/**
* Copyright (c) 2013 Robin Appelman <icewind@owncloud.com>
* This file is licensed under the Affero General Public License version 3 or
* later.
* See the COPYING-README file.
*/
namespace OC\Files\Type;
class TemplateManager {
protected $templates = array();
public function registerTemplate($mimetype, $path) {
$this->templates[$mimetype] = $path;
}
/**
* get the path of the template for a mimetype
*
* @param string $mimetype
* @return string | null
*/
public function getTemplatePath($mimetype) {
if (isset($this->templates[$mimetype])) {
return $this->templates[$mimetype];
} else {
return null;
}
}
/**
* get the template content for a mimetype
*
* @param string $mimetype
* @return string
*/
public function getTemplate($mimetype) {
$path = $this->getTemplatePath($mimetype);
if ($path) {
return file_get_contents($path);
} else {
return '';
}
}
}

View File

@ -28,6 +28,7 @@ class OC_Helper {
private static $tmpFiles = array(); private static $tmpFiles = array();
private static $mimetypeIcons = array(); private static $mimetypeIcons = array();
private static $mimetypeDetector; private static $mimetypeDetector;
private static $templateManager;
/** /**
* @brief Creates an url using a defined route * @brief Creates an url using a defined route
@ -357,6 +358,9 @@ class OC_Helper {
} }
} }
/**
* @return \OC\Files\Type\Detection
*/
static public function getMimetypeDetector() { static public function getMimetypeDetector() {
if (!self::$mimetypeDetector) { if (!self::$mimetypeDetector) {
self::$mimetypeDetector = new \OC\Files\Type\Detection(); self::$mimetypeDetector = new \OC\Files\Type\Detection();
@ -365,6 +369,16 @@ class OC_Helper {
return self::$mimetypeDetector; return self::$mimetypeDetector;
} }
/**
* @return \OC\Files\Type\TemplateManager
*/
static public function getFileTemplateManager() {
if (!self::$templateManager) {
self::$templateManager = new \OC\Files\Type\TemplateManager();
}
return self::$templateManager;
}
/** /**
* Try to guess the mimetype based on filename * Try to guess the mimetype based on filename
* *