From c9d4ff588598a31bfc9e81623d17e873117892c4 Mon Sep 17 00:00:00 2001 From: hyung-hwan Date: Wed, 17 Feb 2016 10:08:44 +0000 Subject: [PATCH] integrated webodf.js into the code file view --- .../src/codepot/models/subversionmodel.php | 66 +- codepot/src/codepot/views/code_file.php | 155 ++- codepot/src/css/code.css | 1 + codepot/src/js/Makefile.am | 3 +- codepot/src/js/Makefile.in | 3 +- codepot/src/js/webodf.js | 936 ++++++++++++++++++ 6 files changed, 1108 insertions(+), 56 deletions(-) create mode 100644 codepot/src/js/webodf.js diff --git a/codepot/src/codepot/models/subversionmodel.php b/codepot/src/codepot/models/subversionmodel.php index 8ffb2581..dda53a9c 100644 --- a/codepot/src/codepot/models/subversionmodel.php +++ b/codepot/src/codepot/models/subversionmodel.php @@ -93,7 +93,30 @@ class SubversionModel extends Model $prop = @svn_proplist ($workurl, FALSE, $rev); if ($prop === FALSE) return FALSE; - $fileinfo['properties'] = array_key_exists($orgurl, $prop)? $prop[$orgurl]: NULL; + //$fileinfo['properties'] = array_key_exists($orgurl, $prop)? $prop[$orgurl]: NULL; + $fileinfo['properties'] = NULL; + foreach ($prop as $k => $v) + { + if ($k == $orgurl || $k == $workurl) + { + $fileinfo['properties'] = $v; + break; + } + else + { + // it looks like the subversion module returns a URL-encoded + // path when it contains a whitespace and the revision is given. + // for example, "UOML SAMPLE.ODT" is returned as "UOML%20SAMPLE.ODT" + // when revision is specified. let's work around it. + $decurl = urldecode($k); + if ($decurl == $orgurl || $decurl == $workurl) + { + $fileinfo['properties'] = $v; + break; + } + } + } + $fileinfo['logmsg'] = (count($log) > 0)? $log[0]['msg']: ''; } @@ -133,7 +156,26 @@ class SubversionModel extends Model $prop = @svn_proplist ($workurl, FALSE, $rev); if ($prop === FALSE) return FALSE; - $fileinfo['properties'] = array_key_exists($orgurl, $prop)? $prop[$orgurl]: NULL; + //$fileinfo['properties'] = array_key_exists($orgurl, $prop)? $prop[$orgurl]: NULL; + $fileinfo['properties'] = NULL; + foreach ($prop as $k => $v) + { + if ($k == $orgurl || $k == $workurl) + { + $fileinfo['properties'] = $v; + break; + } + else + { + $decurl = urldecode($k); + if ($decurl == $orgurl || $decurl == $workurl) + { + $fileinfo['properties'] = $v; + break; + } + } + } + $fileinfo['logmsg'] = (count($log) > 0)? $log[0]['msg']: ''; } @@ -188,7 +230,25 @@ class SubversionModel extends Model $prop = @svn_proplist ($workurl, FALSE, $rev); if ($prop === FALSE) return FALSE; - $fileinfo['properties'] = array_key_exists($orgurl, $prop)? $prop[$orgurl]: NULL; + //$fileinfo['properties'] = array_key_exists($orgurl, $prop)? $prop[$orgurl]: NULL; + $fileinfo['properties'] = NULL; + foreach ($prop as $k => $v) + { + if ($k == $orgurl || $k == $workurl) + { + $fileinfo['properties'] = $v; + break; + } + else + { + $decurl = urldecode($k); + if ($decurl == $orgurl || $decurl == $workurl) + { + $fileinfo['properties'] = $v; + break; + } + } + } $log = @svn_log ($workurl, $fileinfo['created_rev'], diff --git a/codepot/src/codepot/views/code_file.php b/codepot/src/codepot/views/code_file.php index 22e9c111..46969f63 100644 --- a/codepot/src/codepot/views/code_file.php +++ b/codepot/src/codepot/views/code_file.php @@ -7,6 +7,7 @@ $is_image_file = FALSE; $is_pdf_file = FALSE; + $is_odf_file = FALSE; $is_special_stream = FALSE; if (array_key_exists('properties', $file) && count($file['properties']) > 0) { @@ -17,7 +18,7 @@ if ($pv == 'application/octet-stream') { $lower_fileext = strtolower($fileext); - if (in_array ($lower_fileext, array ('png', 'jpg', 'gif', 'tif', 'bmp', 'ico'))) + if (in_array ($lower_fileext, array ('png', 'jpg', 'jpeg', 'gif', 'tif', 'bmp', 'ico'))) { $img = @imagecreatefromstring ($file['content']); if ($img !== FALSE) @@ -34,6 +35,12 @@ $is_pdf_file = TRUE; break; } + else if (in_array ($lower_fileext, array ('odt', 'odp', 'ods'))) + { + $is_special_stream = TRUE; + $is_odf_file = TRUE; + break; + } } else if ($pv == 'application/pdf') { @@ -41,6 +48,14 @@ $is_pdf_file = TRUE; break; } + else if ($pv == 'application/vnd.oasis.opendocument.text' || + $pv == 'application/vnd.oasis.opendocument.presentation' || + $pv == 'application/vnd.oasis.opendocument.spreadsheet') + { + $is_special_stream = TRUE; + $is_odf_file = TRUE; + break; + } } } } @@ -75,6 +90,10 @@ if ($is_pdf_file) { printf ('', base_url_make('/js/pdf.min.js')); } +else if ($is_odf_file) +{ + printf ('', base_url_make('/js/webodf.js')); +} $enstyle_anchor_text = ' ' . $this->lang->line('Enstyle'); $destyle_anchor_text = ' ' . $this->lang->line('Destyle'); @@ -99,24 +118,6 @@ else ?>