diff options
| -rw-r--r-- | data/templates/edit-file.htm | 14 | ||||
| -rw-r--r-- | src/phorkie/HtmlHelper.php | 2 | ||||
| -rw-r--r-- | src/phorkie/Repository/Post.php | 27 |
3 files changed, 35 insertions, 8 deletions
diff --git a/data/templates/edit-file.htm b/data/templates/edit-file.htm index a1993c5..aca61f9 100644 --- a/data/templates/edit-file.htm +++ b/data/templates/edit-file.htm @@ -1,4 +1,11 @@ <div class="well filegroup" id="filegroup{{fileid}}"> + {% if not file or file.isText %} + <textarea name="files[{{fileid}}][content]" id="content_{{fileid}}" cols="80" rows="15" class="content">{{file.getContent}}</textarea> + {% else %} + <p style="text-align: center"> + Binary files cannot be edited. + </p> + {% endif %} <div class="row-fluid"> <div class="span6"> <input type="hidden" name="files[{{fileid}}][original_name]" value="{{file.getFilename}}"/> @@ -14,13 +21,6 @@ <p class="muted">Type determined from filename</p> </div> </div> - {% if not file or file.isText %} - <textarea name="files[{{fileid}}][content]" id="content_{{fileid}}" cols="80" rows="15" class="content">{{file.getContent}}</textarea> - {% else %} - <p style="text-align: center"> - Binary files cannot be edited. - </p> - {% endif %} <div class="row-fluid"> <div class="span9"> <label for="upload_{{fileid}}" class="inline">Replace with upload:</label> diff --git a/src/phorkie/HtmlHelper.php b/src/phorkie/HtmlHelper.php index ebda58b..af046cf 100644 --- a/src/phorkie/HtmlHelper.php +++ b/src/phorkie/HtmlHelper.php @@ -5,7 +5,7 @@ class HtmlHelper { public function getLanguageOptions(File $file = null) { - $html = ''; + $html = '<option value="_auto_">* automatic *</option>'; $fileExt = null; if ($file !== null) { $fileExt = $file->getExt(); diff --git a/src/phorkie/Repository/Post.php b/src/phorkie/Repository/Post.php index 438bf5a..d104a8c 100644 --- a/src/phorkie/Repository/Post.php +++ b/src/phorkie/Repository/Post.php @@ -48,6 +48,11 @@ class Repository_Post $orignalName = Tools::sanitizeFilename($arFile['original_name']); $name = Tools::sanitizeFilename($arFile['name']); + if ($arFile['type'] == '_auto_') { + //FIXME: upload + $arFile['type'] = $this->getType($arFile['content']); + } + if ($name == '') { if ($bUpload) { $name = Tools::sanitizeFilename($_FILES['files']['name'][$num]['upload']); @@ -163,6 +168,28 @@ class Repository_Post return $prefix . $num; } + + protected function getType($content) + { + $tmp = tempnam(sys_get_temp_dir(), 'phorkie-autodetect-'); + file_put_contents($tmp, $content); + $type = \MIME_Type_PlainDetect::autoDetect($tmp); + unlink($tmp); + + return $this->findExtForType($type); + } + + protected function findExtForType($type) + { + $ext = 'text/plain'; + foreach ($GLOBALS['phorkie']['languages'] as $lext => $arLang) { + if ($arLang['mime'] == $type) { + $ext = $lext; + break; + } + } + return $ext; + } } ?> |
