Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
O
our_own_cloud_project
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Deploy
Releases
Model registry
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
GitLab community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
die_coolen_jungs
our_own_cloud_project
Commits
632b3cbb
Commit
632b3cbb
authored
Mar 19, 2012
by
Bart Visscher
Browse files
Options
Downloads
Patches
Plain Diff
Cleanup the template code for redundant code
parent
3d8a09b1
Branches
Branches containing commit
No related tags found
No related merge requests found
Changes
1
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
lib/template.php
+128
-127
128 additions, 127 deletions
lib/template.php
with
128 additions
and
127 deletions
lib/template.php
+
128
−
127
View file @
632b3cbb
...
...
@@ -140,7 +140,7 @@ class OC_Template{
/**
* @brief Constructor
* @param $app app providing the template
* @param $file name of the temp
a
lte file (without suffix)
* @param $file name of the templ
a
te file (without suffix)
* @param $renderas = ""; produce a full page
* @returns OC_Template object
*
...
...
@@ -151,10 +151,20 @@ class OC_Template{
* "admin".
*/
public
function
__construct
(
$app
,
$name
,
$renderas
=
""
){
// Read the selected theme from the config file
$theme
=
OC_Config
::
getValue
(
"theme"
);
// Set the private data
$this
->
renderas
=
$renderas
;
$this
->
application
=
$app
;
$this
->
vars
=
array
();
$this
->
l10n
=
new
OC_L10N
(
$app
);
// Read the detected formfactor and use the right file name.
$this
->
findTemplate
(
$name
);
}
/**
* @brief Returns the formfactor extention for current formfactor
*/
protected
function
getFormFactorExtension
()
{
$formfactor
=
$_SESSION
[
'formfactor'
];
if
(
$formfactor
==
'default'
)
{
$fext
=
''
;
...
...
@@ -167,39 +177,37 @@ class OC_Template{
}
else
{
$fext
=
''
;
}
return
$fext
;
}
/**
* @brief find the template with the given name
* @param $name of the template file (without suffix)
*
* Will select the template file for the selected theme and formfactor.
* Checking all the possible locations.
*/
protected
function
findTemplate
(
$name
)
{
// Read the selected theme from the config file
$theme
=
OC_Config
::
getValue
(
"theme"
);
// Read the detected formfactor and use the right file name.
$fext
=
$this
->
getFormFactorExtension
();
$app
=
$this
->
application
;
// Check if it is a app template or not.
if
(
$app
!=
""
){
// Check if the app is in the app folder or in the root
if
(
file_exists
(
OC
::
$APPSROOT
.
"/apps/
$app
/templates/"
)){
// Check if the template is overwritten by the selected theme
if
(
file_exists
(
OC
::
$SERVERROOT
.
"/themes/
$theme
/apps/
$app
/templates/"
.
"
$name$fext
.php"
)){
$template
=
OC
::
$SERVERROOT
.
"/themes/
$theme
/apps/
$app
/templates/"
.
"
$name$fext
.php"
;
$path
=
OC
::
$SERVERROOT
.
"/themes/
$theme
/apps/
$app
/templates/"
;
}
elseif
(
file_exists
(
OC
::
$SERVERROOT
.
"/themes/
$theme
/apps/
$app
/templates/"
.
"
$name
.php"
)){
$template
=
OC
::
$SERVERROOT
.
"/themes/
$theme
/apps/
$app
/templates/"
.
"
$name
.php"
;
$path
=
OC
::
$SERVERROOT
.
"/themes/
$theme
/apps/
$app
/templates/"
;
}
elseif
(
OC
::
$APPSROOT
.
"/apps/
$app
/templates/"
.
"
$name$fext
.php"
){
$template
=
OC
::
$APPSROOT
.
"/apps/
$app
/templates/"
.
"
$name$fext
.php"
;
$path
=
OC
::
$APPSROOT
.
"/apps/
$app
/templates/"
;
}
else
{
$template
=
OC
::
$APPSROOT
.
"/apps/
$app
/templates/"
.
"
$name
.php"
;
$path
=
OC
::
$APPSROOT
.
"/apps/
$app
/templates/"
;
if
(
$this
->
checkPathForTemplate
(
OC
::
$SERVERROOT
.
"/themes/
$theme
/apps/
$app
/templates/"
,
$name
,
$fext
))
{
}
elseif
(
$this
->
checkPathForTemplate
(
OC
::
$APPSROOT
.
"/apps/
$app
/templates/"
,
$name
,
$fext
))
{
}
}
else
{
// Check if the template is overwritten by the selected theme
if
(
file_exists
(
OC
::
$SERVERROOT
.
"/themes/
$theme
/
$app
/templates/"
.
"
$name$fext
.php"
)){
$template
=
OC
::
$SERVERROOT
.
"/themes/
$theme
/
$app
/templates/"
.
"
$name$fext
.php"
;
$path
=
OC
::
$SERVERROOT
.
"/themes/
$theme
/
$app
/templates/"
;
}
elseif
(
file_exists
(
OC
::
$SERVERROOT
.
"/themes/
$theme
/
$app
/templates/"
.
"
$name
.php"
)){
$template
=
OC
::
$SERVERROOT
.
"/themes/
$theme
/
$app
/templates/"
.
"
$name
.php"
;
$path
=
OC
::
$SERVERROOT
.
"/themes/
$theme
/
$app
/templates/"
;
}
elseif
(
file_exists
(
OC
::
$SERVERROOT
.
"/
$app
/templates/"
.
"
$name$fext
.php"
)){
$template
=
OC
::
$SERVERROOT
.
"/
$app
/templates/"
.
"
$name$fext
.php"
;
$path
=
OC
::
$SERVERROOT
.
"/
$app
/templates/"
;
}
elseif
(
file_exists
(
OC
::
$SERVERROOT
.
"/
$app
/templates/"
.
"
$name
.php"
)){
$template
=
OC
::
$SERVERROOT
.
"/
$app
/templates/"
.
"
$name
.php"
;
$path
=
OC
::
$SERVERROOT
.
"/
$app
/templates/"
;
if
(
$this
->
checkPathForTemplate
(
OC
::
$SERVERROOT
.
"/themes/
$theme
/
$app
/templates/"
,
$name
,
$fext
))
{
}
elseif
(
$this
->
checkPathForTemplate
(
OC
::
$SERVERROOT
.
"/
$app
/templates/"
,
$name
,
$fext
))
{
}
else
{
echo
(
'template not found: template:'
.
$name
.
' formfactor:'
.
$fext
.
' webroot:'
.
OC
::
$WEBROOT
.
' serverroot:'
.
OC
::
$SERVERROOT
);
die
();
...
...
@@ -208,29 +216,40 @@ class OC_Template{
}
}
else
{
// Check if the template is overwritten by the selected theme
if
(
file_exists
(
OC
::
$SERVERROOT
.
"/themes/
$theme
/core/templates/"
.
"
$name$fext
.php"
)){
$template
=
OC
::
$SERVERROOT
.
"/themes/
$theme
/core/templates/"
.
"
$name$fext
.php"
;
$path
=
OC
::
$SERVERROOT
.
"/themes/
$theme
/core/templates/"
;
}
elseif
(
file_exists
(
OC
::
$SERVERROOT
.
"/themes/
$theme
/core/templates/"
.
"
$name
.php"
)){
$template
=
OC
::
$SERVERROOT
.
"/themes/
$theme
/core/templates/"
.
"
$name
.php"
;
$path
=
OC
::
$SERVERROOT
.
"/themes/
$theme
/core/templates/"
;
}
elseif
(
file_exists
(
OC
::
$SERVERROOT
.
"/core/templates/"
.
"
$name$fext
.php"
)){
$template
=
OC
::
$SERVERROOT
.
"/core/templates/"
.
"
$name$fext
.php"
;
$path
=
OC
::
$SERVERROOT
.
"/core/templates/"
;
if
(
$this
->
checkPathForTemplate
(
OC
::
$SERVERROOT
.
"/themes/
$theme
/core/templates/"
,
$name
,
$fext
))
{
}
elseif
(
$this
->
checkPathForTemplate
(
OC
::
$SERVERROOT
.
"/core/templates/"
,
$name
,
$fext
))
{
}
else
{
$template
=
OC
::
$SERVERROOT
.
"/core/templates/"
.
"
$name
.php"
;
$path
=
OC
::
$SERVERROOT
.
"/core/templates/"
;
echo
(
'template not found: template:'
.
$name
.
' formfactor:'
.
$fext
.
' webroot:'
.
OC
::
$WEBROOT
.
' serverroot:'
.
OC
::
$SERVERROOT
);
die
();
}
}
}
// Set the private data
$this
->
renderas
=
$renderas
;
$this
->
application
=
$app
;
/**
* @brief check Path For Template with and without $fext
* @param $path to check
* @param $name of the template file (without suffix)
* @param $fext formfactor extension
* @return bool true when found
*
* Will set $this->template and $this->path if there is a template at
* the specifief $path
*/
protected
function
checkPathForTemplate
(
$path
,
$name
,
$fext
)
{
if
(
$name
==
''
)
return
false
;
$template
=
null
;
if
(
is_file
(
$path
.
$name
.
$fext
.
'.php'
)){
$template
=
$path
.
$name
.
$fext
.
'.php'
;
}
elseif
(
is_file
(
$path
.
$name
.
'.php'
)){
$template
=
$path
.
$name
.
'.php'
;
}
if
(
$template
)
{
$this
->
template
=
$template
;
$this
->
path
=
$path
;
$this
->
vars
=
array
();
$this
->
l10n
=
new
OC_L10N
(
$app
);
return
true
;
}
return
false
;
}
/**
...
...
@@ -295,11 +314,25 @@ class OC_Template{
}
}
/*
* @brief append the $file-url if exist at $root
* @param $type of collection to use when appending
* @param $root path to check
* @param $web base for path
* @param $file the filename
*/
public
function
appendIfExist
(
$type
,
$root
,
$web
,
$file
)
{
if
(
is_file
(
$root
.
'/'
.
$file
))
{
$this
->
append
(
$type
,
$web
.
'/'
.
$file
);
return
true
;
}
return
false
;
}
/**
* @brief Proceeds the template
* @returns content
*
* This function proceeds the template. If $this->renderas is set, it
will
* This function proceeds the template. If $this->renderas is set, it
* will produce a full page.
*/
public
function
fetchPage
(){
...
...
@@ -334,60 +367,36 @@ class OC_Template{
$theme
=
OC_Config
::
getValue
(
"theme"
);
// Read the detected formfactor and use the right file name.
$formfactor
=
$_SESSION
[
'formfactor'
];
if
(
$formfactor
==
'default'
)
{
$fext
=
''
;
}
elseif
(
$formfactor
==
'mobile'
)
{
$fext
=
'.mobile'
;
}
elseif
(
$formfactor
==
'tablet'
)
{
$fext
=
'.tablet'
;
}
elseif
(
$formfactor
==
'standalone'
)
{
$fext
=
'.standalone'
;
}
else
{
$fext
=
''
;
}
$fext
=
$this
->
getFormFactorExtension
();
// Add the core js files or the js files provided by the selected theme
foreach
(
OC_Util
::
$scripts
as
$script
){
// Is it in 3rd party?
if
(
is_file
(
OC
::
$THIRDPARTYROOT
.
"/
$script
.js"
)){
$page
->
append
(
"jsfiles"
,
OC
::
$THIRDPARTYWEBROOT
.
"/
$script
.js"
);
if
(
$page
->
appendIfExist
(
'jsfiles'
,
OC
::
$THIRDPARTYROOT
,
OC
::
$THIRDPARTYWEBROOT
,
$script
.
'.js'
))
{
// Is it in apps and overwritten by the theme?
}
elseif
(
is_file
(
OC
::
$SERVERROOT
.
"/themes/
$theme
/apps/
$script$fext
.js"
)){
$page
->
append
(
"jsfiles"
,
OC
::
$WEBROOT
.
"/themes/
$theme
/apps/
$script$fext
.js"
);
}
elseif
(
is_file
(
OC
::
$SERVERROOT
.
"/themes/
$theme
/apps/
$script
.js"
)){
$page
->
append
(
"jsfiles"
,
OC
::
$WEBROOT
.
"/themes/
$theme
/apps/
$script
.js"
);
}
elseif
(
$page
->
appendIfExist
(
'jsfiles'
,
OC
::
$SERVERROOT
,
OC
::
$WEBROOT
,
"themes/
$theme
/apps/
$script$fext
.js"
))
{
}
elseif
(
$page
->
appendIfExist
(
'jsfiles'
,
OC
::
$SERVERROOT
,
OC
::
$WEBROOT
,
"themes/
$theme
/apps/
$script
.js"
))
{
// Is it part of an app?
}
elseif
(
is_file
(
OC
::
$APPSROOT
.
"/apps/
$script$fext
.js"
)){
$page
->
append
(
"jsfiles"
,
OC
::
$APPSWEBROOT
.
"/apps/
$script$fext
.js"
);
}
elseif
(
is_file
(
OC
::
$APPSROOT
.
"/apps/
$script
.js"
)){
$page
->
append
(
"jsfiles"
,
OC
::
$APPSWEBROOT
.
"/apps/
$script
.js"
);
}
elseif
(
$page
->
appendIfExist
(
'jsfiles'
,
OC
::
$APPSROOT
,
OC
::
$APPSWEBROOT
,
"apps/
$script$fext
.js"
))
{
}
elseif
(
$page
->
appendIfExist
(
'jsfiles'
,
OC
::
$APPSROOT
,
OC
::
$APPSWEBROOT
,
"apps/
$script
.js"
))
{
// Is it in the owncloud root but overwritten by the theme?
}
elseif
(
is_file
(
OC
::
$SERVERROOT
.
"/themes/
$theme
/
$script$fext
.js"
)){
$page
->
append
(
"jsfiles"
,
OC
::
$WEBROOT
.
"/themes/
$theme
/
$script$fext
.js"
);
}
elseif
(
is_file
(
OC
::
$SERVERROOT
.
"/themes/
$theme
/
$script
.js"
)){
$page
->
append
(
"jsfiles"
,
OC
::
$WEBROOT
.
"/themes/
$theme
/
$script
.js"
);
}
elseif
(
$page
->
appendIfExist
(
'jsfiles'
,
OC
::
$SERVERROOT
,
OC
::
$WEBROOT
,
"themes/
$theme
/
$script$fext
.js"
))
{
}
elseif
(
$page
->
appendIfExist
(
'jsfiles'
,
OC
::
$SERVERROOT
,
OC
::
$WEBROOT
,
"themes/
$theme
/
$script
.js"
))
{
// Is it in the owncloud root ?
}
elseif
(
is_file
(
OC
::
$SERVERROOT
.
"/
$script$fext
.js"
)){
$page
->
append
(
"jsfiles"
,
OC
::
$WEBROOT
.
"/
$script$fext
.js"
);
}
elseif
(
is_file
(
OC
::
$SERVERROOT
.
"/
$script
.js"
)){
$page
->
append
(
"jsfiles"
,
OC
::
$WEBROOT
.
"/
$script
.js"
);
}
elseif
(
$page
->
appendIfExist
(
'jsfiles'
,
OC
::
$SERVERROOT
,
OC
::
$WEBROOT
,
"
$script$fext
.js"
))
{
}
elseif
(
$page
->
appendIfExist
(
'jsfiles'
,
OC
::
$SERVERROOT
,
OC
::
$WEBROOT
,
"
$script
.js"
))
{
// Is in core but overwritten by a theme?
}
elseif
(
is_file
(
OC
::
$SERVERROOT
.
"/themes/
$theme
/core/
$script$fext
.js"
)){
$page
->
append
(
"jsfiles"
,
OC
::
$WEBROOT
.
"/themes/
$theme
/core/
$script$fext
.js"
);
}
elseif
(
is_file
(
OC
::
$SERVERROOT
.
"/themes/
$theme
/core/
$script
.js"
)){
$page
->
append
(
"jsfiles"
,
OC
::
$WEBROOT
.
"/themes/
$theme
/core/
$script
.js"
);
}
elseif
(
$page
->
appendIfExist
(
'jsfiles'
,
OC
::
$SERVERROOT
,
OC
::
$WEBROOT
,
"themes/
$theme
/core/
$script$fext
.js"
))
{
}
elseif
(
$page
->
appendIfExist
(
'jsfiles'
,
OC
::
$SERVERROOT
,
OC
::
$WEBROOT
,
"themes/
$theme
/core/
$script
.js"
))
{
// Is it in core?
}
elseif
(
is_file
(
OC
::
$SERVERROOT
.
"/core/
$script$fext
.js"
)){
$page
->
append
(
"jsfiles"
,
OC
::
$WEBROOT
.
"/core/
$script$fext
.js"
);
}
elseif
(
is_file
(
OC
::
$SERVERROOT
.
"/core/
$script
.js"
)){
$page
->
append
(
"jsfiles"
,
OC
::
$WEBROOT
.
"/core/
$script
.js"
);
}
elseif
(
$page
->
appendIfExist
(
'jsfiles'
,
OC
::
$SERVERROOT
,
OC
::
$WEBROOT
,
"core/
$script$fext
.js"
))
{
}
elseif
(
$page
->
appendIfExist
(
'jsfiles'
,
OC
::
$SERVERROOT
,
OC
::
$WEBROOT
,
"core/
$script
.js"
))
{
}
else
{
echo
(
'js file not found: script:'
.
$script
.
' formfactor:'
.
$fext
.
' webroot:'
.
OC
::
$WEBROOT
.
' serverroot:'
.
OC
::
$SERVERROOT
);
...
...
@@ -398,23 +407,19 @@ class OC_Template{
// Add the css files
foreach
(
OC_Util
::
$styles
as
$style
){
// is it in 3rdparty?
if
(
is_file
(
OC
::
$THIRDPARTYROOT
.
"/
$style
.css
"
)){
$page
->
append
(
"cssfiles"
,
OC
::
$THIRDPARTYWEBROOT
.
"/
$style
.css"
);
if
(
$page
->
appendIfExist
(
'cssfiles'
,
OC
::
$THIRDPARTYROOT
,
OC
::
$THIRDPARTYWEBROOT
,
$style
.
'.
css
'
))
{
// or in apps?
}
elseif
(
is_file
(
OC
::
$APPSROOT
.
"/apps/
$style$fext
.css"
)){
$page
->
append
(
"cssfiles"
,
OC
::
$APPSWEBROOT
.
"/apps/
$style$fext
.css"
);
}
elseif
(
is_file
(
OC
::
$APPSROOT
.
"/apps/
$style
.css"
)){
$page
->
append
(
"cssfiles"
,
OC
::
$APPSWEBROOT
.
"/apps/
$style
.css"
);
}
elseif
(
$page
->
appendIfExist
(
'cssfiles'
,
OC
::
$APPSROOT
,
OC
::
$APPSWEBROOT
,
"apps/
$style$fext
.css"
))
{
}
elseif
(
$page
->
appendIfExist
(
'cssfiles'
,
OC
::
$APPSROOT
,
OC
::
$APPSWEBROOT
,
"apps/
$style
.css"
))
{
// or in the owncloud root?
}
elseif
(
is_file
(
OC
::
$SERVERROOT
.
"/
$style$fext
.css"
)){
$page
->
append
(
"cssfiles"
,
OC
::
$WEBROOT
.
"/
$style$fext
.css"
);
}
elseif
(
is_file
(
OC
::
$SERVERROOT
.
"/
$style
.css"
)){
$page
->
append
(
"cssfiles"
,
OC
::
$WEBROOT
.
"/
$style
.css"
);
}
elseif
(
$page
->
appendIfExist
(
'cssfiles'
,
OC
::
$SERVERROOT
,
OC
::
$WEBROOT
,
"
$style$fext
.css"
))
{
}
elseif
(
$page
->
appendIfExist
(
'cssfiles'
,
OC
::
$SERVERROOT
,
OC
::
$WEBROOT
,
"
$style
.css"
))
{
// or in core ?
}
elseif
(
is_file
(
OC
::
$SERVERROOT
.
"/core/
$style$fext
.css"
)){
$page
->
append
(
"cssfiles"
,
OC
::
$WEBROOT
.
"/core/
$style$fext
.css"
);
}
elseif
(
is_file
(
OC
::
$SERVERROOT
.
"/core/
$style
.css"
)){
$page
->
append
(
"cssfiles"
,
OC
::
$WEBROOT
.
"/core/
$style
.css"
);
}
elseif
(
$page
->
appendIfExist
(
'cssfiles'
,
OC
::
$SERVERROOT
,
OC
::
$WEBROOT
,
"core/
$style$fext
.css"
))
{
}
elseif
(
$page
->
appendIfExist
(
'cssfiles'
,
OC
::
$SERVERROOT
,
OC
::
$WEBROOT
,
"core/
$style
.css"
))
{
}
else
{
echo
(
'css file not found: style:'
.
$script
.
' formfactor:'
.
$fext
.
' webroot:'
.
OC
::
$WEBROOT
.
' serverroot:'
.
OC
::
$SERVERROOT
);
...
...
@@ -424,18 +429,14 @@ class OC_Template{
// Add the theme css files. you can override the default values here
if
(
!
empty
(
$theme
))
{
foreach
(
OC_Util
::
$styles
as
$style
){
if
(
is_file
(
OC
::
$SERVERROOT
.
"/themes/
$theme
/apps/
$style$fext
.css"
)){
$page
->
append
(
"cssfiles"
,
OC
::
$WEBROOT
.
"/themes/
$theme
/apps/
$style$fext
.css"
);
}
elseif
(
is_file
(
OC
::
$SERVERROOT
.
"/themes/
$theme
/apps/
$style
.css"
)){
$page
->
append
(
"cssfiles"
,
OC
::
$WEBROOT
.
"/themes/
$theme
/apps/
$style
.css"
);
}
elseif
(
is_file
(
OC
::
$SERVERROOT
.
"/themes/
$theme
/
$style$fext
.css"
)){
$page
->
append
(
"cssfiles"
,
OC
::
$WEBROOT
.
"/themes/
$theme
/
$style$fext
.css"
);
}
elseif
(
is_file
(
OC
::
$SERVERROOT
.
"/themes/
$theme
/
$style
.css"
)){
$page
->
append
(
"cssfiles"
,
OC
::
$WEBROOT
.
"/themes/
$theme
/
$style
.css"
);
}
elseif
(
is_file
(
OC
::
$SERVERROOT
.
"/themes/
$theme
/core/
$style$fext
.css"
)){
$page
->
append
(
"cssfiles"
,
OC
::
$WEBROOT
.
"/themes/
$theme
/core/
$style$fext
.css"
);
}
elseif
(
is_file
(
OC
::
$SERVERROOT
.
"/themes/
$theme
/core/
$style
.css"
)){
$page
->
append
(
"cssfiles"
,
OC
::
$WEBROOT
.
"/themes/
$theme
/core/
$style
.css"
);
if
(
$page
->
appendIfExist
(
'cssfiles'
,
OC
::
$SERVERROOT
,
OC
::
$WEBROOT
,
"themes/
$theme
/apps/
$style$fext
.css"
))
{
}
elseif
(
$page
->
appendIfExist
(
'cssfiles'
,
OC
::
$SERVERROOT
,
OC
::
$WEBROOT
,
"themes/
$theme
/apps/
$style
.css"
))
{
}
elseif
(
$page
->
appendIfExist
(
'cssfiles'
,
OC
::
$SERVERROOT
,
OC
::
$WEBROOT
,
"themes/
$theme
/
$style$fext
.css"
))
{
}
elseif
(
$page
->
appendIfExist
(
'cssfiles'
,
OC
::
$SERVERROOT
,
OC
::
$WEBROOT
,
"themes/
$theme
/
$style
.css"
))
{
}
elseif
(
$page
->
appendIfExist
(
'cssfiles'
,
OC
::
$SERVERROOT
,
OC
::
$WEBROOT
,
"themes/
$theme
/core/
$style$fext
.css"
))
{
}
elseif
(
$page
->
appendIfExist
(
'cssfiles'
,
OC
::
$SERVERROOT
,
OC
::
$WEBROOT
,
"themes/
$theme
/core/
$style
.css"
))
{
}
}
}
...
...
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment