Version 4.0.13.1

This commit is contained in:
Neo committed 2025-12-19 04:57:54 -08:00
1 parent f9e857d255
commit c6a86f0d9b
7517 files changed
+597400 -668041

No files matched your search

+22
View File
@@ -0,0 +1,22 @@
<ips:template parameters="$apps, $selected" />
<ul class='ipsField_fieldList'>
{{foreach $apps as $key => $data}}
<li>
<input type="checkbox" id='app_{$key}' name="apps[{$key}]" {{if $data['force'] or in_array( $key, $selected )}}checked{{endif}} {{if $data['force'] or $data['disabled']}}disabled{{endif}} value='1'>
<div class='ipsField_fieldList_content'>
<label for='app_{$key}' class='ipsFieldRow_label'>{$data['name']}</label>
<dl class='ipsVersions{{if $data['disabled']}} disabled{{endif}}'>
<dt>Current Version</dt>
<dd>{$data['current']}</dd>
<dt>Available Version</dt>
<dd>{$data['available']}</dd>
</dl>
{{if !empty( $data['errors'] )}}
<p class="ipsMessage ipsMessage_error">
{expression="implode( '<br />', $data['errors'] )" raw="true"}
</p>
{{endif}}
</div>
</li>
{{endforeach}}
</ul>
+6
View File
@@ -0,0 +1,6 @@
<ips:template parameters="$lang, $type, $href=NULL, $class='', $attributes=array()" />
{{if $type === 'link'}}
<a href="{$href}" class='ipsButton ipsButton_link {{if $class}}{$class}{{endif}}' {{if $attributes}}{{foreach $attributes as $key => $value}}{$key}="{$value}"{{endforeach}}{{endif}} role="button">{lang="$lang"}</a>
{{else}}
<button type="{$type}" class="{{if $class}}{$class}{{endif}}" {{if $attributes}}{{foreach $attributes as $key => $value}}{$key}="{$value}"{{endforeach}}{{endif}} role="button">{lang="$lang"}</button>
{{endif}}
+14
View File
@@ -0,0 +1,14 @@
<ips:template parameters="$name, $value=FALSE, $disabled=FALSE, $toggles=array(), $toggleOn=TRUE, $label='', $hiddenName=''" />
<input type="hidden" name="{$hiddenName}" value="0" />
<label>
<input
type='checkbox'
name='{$name}'
value='1'
{{if $value}}checked{{endif}}
{{if $disabled}}disabled{{endif}}
{{if !empty($toggles)}} data-control="toggle" data-toggles="{expression="implode( ',', $toggles )"}"{{endif}}
{{if $toggleOn === FALSE}}data-togglereverse="true"{{endif}}
/>
{lang="$label"}
</label>
+4
View File
@@ -0,0 +1,4 @@
<ips:template parameters="$lang, $id=NULL" />
<li {{if $id !== NULL}} id="{$id}"{{endif}}>
<h2 class='ipsFieldRow_section'>{lang="$lang"}</h2>
</li>
View File
Whitespace-only changes.
+30
View File
@@ -0,0 +1,30 @@
<ips:template parameters="$forms, $error" />
{{if $error !== NULL}}
<div class='ipsMessage ipsMessage_error'>
{lang="$error"}
</div>
<br>
{{endif}}
<div class='ipsColumns ipsColumns_collapsePhone'>
<div class='ipsColumn ipsColumn_fluid ipsPad'>
{{foreach $forms as $k => $form}}
{{if $k === '_standard'}}
{$form|raw}
{{endif}}
{{endforeach}}
</div>
{{if count ( $forms ) > 1}}
<div class='ipsColumn ipsColumn_veryWide ipsPad'>
<h2 class='ipsType_sectionHead'>{lang='sign_in_faster'}</h2>
<p class='ipsType_normal ipsType_reset ipsType_light'>{lang='sign_in_connect'}</p>
<br>
{{foreach $forms as $k => $form}}
{{if $k !== '_standard'}}
{$form|raw}
{{endif}}
{{endforeach}}
</div>
{{endif}}
</div>
+5
View File
@@ -0,0 +1,5 @@
<ips:template parameters="" />
<p class='ipsMessage ipsMessage_error'>There are no applications available to upgrade</p>
<div class='ipsPad_double ipsType_center'>
<a href='../../' class='ipsButton ipsButton_large ipsButton_primary'>Exit upgrader</a>
</div>
+30
View File
@@ -0,0 +1,30 @@
<ips:template parameters="$name, $value, $required, $unlimited, $range, $min, $max, $step, $decimals, $unlimitedLang, $disabled=FALSE, $suffix, $toggles" />
<input
type="{{if $range}}range{{else}}number{{endif}}"
name="{$name}"
size="5"
{{if $required === TRUE}}required{{endif}}
{{if $unlimited !== NULL and $value === $unlimited}}
value=""
data-jsdisable="true"
{{else}}
value="{$value}"
{{endif}}
{{if $min !== NULL}}
min="{$min}"
{{endif}}
{{if $max !== NULL}}
max="{$max}"
{{endif}}
{{if $step !== NULL}}
step="{$step}"
{{endif}}
{{if $disabled}}disabled{{endif}}
>
{$suffix}
{{if $unlimited !== NULL}}
&nbsp;
{lang="or"}
&nbsp;
<label><input type="checkbox" data-control="unlimited" name="{expression="preg_replace( '/\[(.+?)\]/', '[$1_unlimited]', $name, 1 )"}" value="{$unlimited}" {{if $unlimited === $value}}checked{{endif}} {{if $disabled}}disabled{{endif}} data-control="toggle" data-toggles="{expression="implode( ',', $toggles )"}" /> {lang="$unlimitedLang"}</label>
{{endif}}
+12
View File
@@ -0,0 +1,12 @@
<ips:template parameters="$queries, $url, $message=NULL" />
<h1 class='ipsType_veryLarge'>{lang="manual_query_header"}</h1>
<hr class='ipsHr'>
<p class="ipsType_normal">{lang="manual_query_instructions"}</p>
{{foreach $queries as $query}}
<pre class="ipsCode prettyprint lang-sql">{$query}{{if mb_substr( $query, -1 ) != ';'}};{{endif}}</pre>
{{endforeach}}
<div class="ipsAreaBackground ipsPad ipsType_center">
<a href="{$url->setQueryString( array( 'key' => $_SESSION['uniqueKey'], 'mr_continue' => NULL, 'run_anyway' => 1, 'mr' => \IPS\Request::i()->mr ) )}" data-action="redirectContinue" class="ipsButton ipsButton_primary">{lang="manual_query_auto"}</a>
&nbsp;{lang="or"}&nbsp;
<a href="{$url}" data-action="redirectContinue" class="ipsButton ipsButton_primary">{lang="manual_query_manual"}</a>
</div>
+32
View File
@@ -0,0 +1,32 @@
<ips:template parameters="$name, $value, $required, $options, $disabled=FALSE, $toggles=array(), $descriptions=array(), $userSuppliedInput='', $unlimited=NULL, $unlimitedLang=NULL" />
{{if $unlimited !== NULL}}
<ul class="ipsField_fieldList" role="radiogroup">
<li>
<input type="checkbox" name="{$name}" value="{$unlimited}" id='elRadio_{$name}_{unlimited}' data-control="toggle" data-togglesOff="elRadio_{$name}" {{if $value === $unlimited}}checked{{endif}} />
<div class='ipsField_fieldList_content'>
<label for='elRadio_{$name}_{unlimited}'>
{lang="$unlimitedLang"}
</label>
</div>
</li>
</ul>
{{endif}}
<ul class="ipsField_fieldList" role="radiogroup" id="elRadio_{$name}">
{{foreach $options as $k => $v}}
<li>
<input type="radio" name="{$name}" value="{$k}" {{if (string) $value == (string) $k or ( isset( $userSuppliedInput ) and !in_array( $value, array_keys( $options ) ) and $k == $userSuppliedInput )}}checked{{endif}} {{if $required === TRUE}}required{{endif}} {{if $disabled === TRUE or ( is_array( $disabled ) and in_array( $k, $disabled ) )}}disabled{{endif}} {{if isset( $toggles[ $k ] ) and !empty( $toggles[ $k ] )}}data-control="toggle" data-toggles="{expression="implode( ',', $toggles[ $k ] )"}"{{endif}} id="elRadio_{$name}_{$k}" />
<div class='ipsField_fieldList_content'>
<label for='elRadio_{$name}_{$k}' id='elField_{$name}_label'>{$v|raw}</label>
{{if !empty( $userSuppliedInput ) AND $userSuppliedInput == $k}}
<input type='text' name='{$userSuppliedInput}_{$name}' value="{{if !in_array( $value, array_keys( $options ) )}}{$value}{{endif}}" id='{$userSuppliedInput}_{expression="preg_replace('/[^a-zA-Z0-9\-_]/', '_', $name)"}'>
{{endif}}
{{if isset( $descriptions[ $k ] )}}
<br>
<span class='ipsFieldRow_desc'>
{$descriptions[ $k ]|raw}
</span>
{{endif}}
</div>
</li>
{{endforeach}}
</ul>
+19
View File
@@ -0,0 +1,19 @@
<ips:template parameters="$langKey, $element, $desc, $warning, $required, $error, $prefix, $suffix, $id" />
<li {{if $id !== NULL}}id="{$id}"{{endif}} class='ipsFieldRow'>
<label class='ipsFieldRow_label {{if $error}}error{{endif}}'>
{lang="$langKey"} {{if $required}}<span class='ipsFieldRow_required'>{lang="required"}</span>{{endif}}
</label>
<div class='ipsFieldRow_content'>
{$prefix|raw}
{$element|raw}
{$suffix|raw}
{$desc|raw}
{$warning|raw}
<br />
{{if $error}}
<span class='ipsType_warning'>{lang="$error"}</span>
{{else:}}
<span class='ipsType_warning'></span>
{{endif}}
</div>
</li>
+5
View File
@@ -0,0 +1,5 @@
<ips:template parameters="$label, $element, $required=FALSE, $error=NULL, $prefix=NULL, $suffix=NULL, $id=NULL, $object=NULL, $form=NULL" />
<br>
<span class='ipsFieldRow_desc'>
%s
</span>
@@ -0,0 +1,5 @@
<ips:template parameters="$label, $element, $required=FALSE, $error=NULL, $prefix=NULL, $suffix=NULL, $id=NULL, $object=NULL, $form=NULL" />
<div {{if $id !== NULL}}id="{$id}_warning"{{endif}}>
<br>
<p class='ipsMessage ipsMessage_warning'>%s</p>
</div>
+6
View File
@@ -0,0 +1,6 @@
<ips:template parameters="$name, $value, $required, $options" />
<select name="{$name}" id="{$name}">
{{foreach $options as $k => $v}}
<option value='{$k}' {{if $value == $k}}selected{{endif}}>{$v|raw}</option>
{{endforeach}}
</select>
+30
View File
@@ -0,0 +1,30 @@
<ips:template parameters="$id, $action, $tabs, $activeTab, $error, $errorTabs, $hiddenValues, $actionButtons, $uploadField, $sidebar, $tabClasses=array(), $formClass='', $attributes=array(), $tabArray=array(), $usingIcons=FALSE" />
<form action="{$action}" method="post" {{if $uploadField}}enctype="multipart/form-data"{{endif}}>
<input type="hidden" name="{$id}_submitted" value="1">
{{foreach $hiddenValues as $k => $v}}
{{if is_array( $v )}}
{{foreach $v as $_k => $_v}}
<input type="hidden" name="{$k}[{$_k}]" value="{$_v}">
{{endforeach}}
{{else}}
<input type="hidden" name="{$k}" value="{$v}">
{{endif}}
{{endforeach}}
{{if $uploadField}}
<input type="hidden" name="MAX_FILE_SIZE" value="{$uploadField}">
<input type="hidden" name="plupload" value="{expression="md5( uniqid() )"}">
{{endif}}
{{if $error}}
<div class="ipsMessage ipsMessage_error">
{$error}
</div>
{{endif}}
<ul class='ipsForm ipsForm_vertical'>
{expression="array_pop( $tabs )" raw="true"}
<li class='ipsFieldRow'>
<div class='ipsFieldRow_content'>
{expression="implode( '', $actionButtons)" raw="true"}
</div>
</li>
</ul>
</form>
+37
View File
@@ -0,0 +1,37 @@
<ips:template parameters="$name, $type, $value, $required, $maxlength=NULL, $size=NULL, $disabled=FALSE, $autoComplete=NULL, $placeholder" />
<input
type="{$type}"
name="{$name}"
value="{$value}"
{{if $required === TRUE}}required{{endif}}
{{if $maxlength !== NULL}}maxlength="{$maxlength}"{{endif}}
{{if $size !== NULL}}size="{$size}"{{endif}}
{{if $disabled}}disabled{{endif}}
class="input_text"
{{if $autoComplete !== NULL}}
data-ipsAutocomplete
{{if $autoComplete['maxItems']}}
data-ipsAutocomplete-maxItems='{$autoComplete['maxItems']}'
{{endif}}
{{if $autoComplete['unique']}}
data-ipsAutocomplete-unique
{{endif}}
{{if is_array( $autoComplete['source'] )}}
list='{$name}_datalist'
{{elseif $autoComplete['source']}}
data-ipsAutocomplete-dataSource="{url="{$autoComplete['source']}"}"
data-ipsAutocomplete-queryParam='input'
{{endif}}
{{if $autoComplete['resultItemTemplate']}}
data-ipsAutocomplete-resultItemTemplate="{$autoComplete['resultItemTemplate']}"
{{endif}}
{{endif}}
{{if $placeholder !== NULL}}placeholder='{$placeholder}'{{endif}}
/>
{{if is_array( $autoComplete )}}
<datalist id="{$name}_datalist">
{{foreach $autoComplete as $v}}
<option value="$v">{$v}</option>
{{endforeach}}
</datalist>
{{endif}}
+39
View File
@@ -0,0 +1,39 @@
<ips:template parameters="$name, $value='', $required, $maxlength=NULL, $disabled=FALSE, $class='', $placeholder='', $nullLang=NULL, $tags=array()" />
{{if !empty( $tags )}}
<div class='ipsColumns ipsColumns_collapseTablet' data-controller='core.global.editor.customtags' data-tagFieldType='text' data-tagFieldID='{$name}'>
<div class='ipsColumn_fluid ipsColumn'>
<div data-role="editor">
{{endif}}
<textarea
name="{$name}"
id='{expression="preg_replace('/[^a-zA-Z0-9\-_]/', '_', $name)"}'
value="{$value}"
class="ipsField_fullWidth {$class}"
{{if $maxlength !== NULL}}maxlength="{$maxlength}"{{endif}}
{{if $required === TRUE}}required aria-required='true'{{endif}}
{{if $disabled}}disabled aria-disabled='true'{{endif}}
{{if $placeholder}}placeholder="{$placeholder}"{{endif}}
>{$value}</textarea>
{{if !empty( $tags )}}
</div>
{{endif}}
{{if $nullLang}}
{lang="or"} <input type="checkbox" role='checkbox' data-control="unlimited" name="{$name}_null" id="{$name}_null" value="1" {{if $value === NULL}}checked aria-checked='true'{{endif}} {{if $disabled}}disabled{{endif}} aria-controls='{$name}' aria-labelledby='{$name}_null_label'> <label for='{$name}_null' id='{$name}_null_label'>{lang="$nullLang"}</label>
{{endif}}
{{if !empty( $tags )}}
</div>
<div class='ipsColumn_medium ipsColumn ipsAreaBackground_light ipsComposeArea_sidebar {{if !isset( \IPS\Request::i()->cookie['tagSidebar'] )}}ipsComposeArea_sidebarOpen{{else}}ipsComposeArea_sidebarClosed{{endif}}'>
<a href='#' class="ipsJS_show" data-action='tagsToggle' data-ipsTooltip data-ipsTooltip-label="{lang="toggle_sidebar"}">{lang="toggle_sidebar"}</a>
<h3 class='ipsAreaBackground ipsPad_half ipsType_reset' data-role='tagsHeader'>{lang="editor_tags"}</h3>
<ul class='ipsList_reset ipsScrollbar' data-role='tagsList'>
{{foreach $tags as $tagKey => $tagValue }}
<li class='ipsPad_half'>
<label class="ipsJS_show" data-tagKey="{$tagKey}">{$tagKey}</label>
<div class='ipsJS_hide ipsType_light'><strong>{$tagKey}</strong></div>
<div class='ipsType_light ipsType_small'>{$tagValue}</div>
</li>
{{endforeach}}
</ul>
</div>
</div>
{{endif}}
@@ -0,0 +1,11 @@
<ips:template parameters="$apps" />
<p class="ipsType_large">{lang="apps_will_be_disabled"}</p>
<ul class="ipsPad ipsType_large ipsList_checks">
{{foreach $apps as $name}}
<li class="fail">{$name}</li>
{{endforeach}}
</ul>
<div class='ipsPad_double ipsType_center'>
<a href='{url="controller=applications&key={$_SESSION['uniqueKey']}"}' class='ipsButton ipsButton_large ipsButton_primary'>{lang="go_back"}</a>
<a href='{url="controller=customoptions&key={$_SESSION['uniqueKey']}"}&disable={expression="\IPS\Request::i()->warnings"}' class='ipsButton ipsButton_large ipsButton_alternate'>{lang="continue_anyway"}</a>
</div>
@@ -0,0 +1,25 @@
<ips:template parameters="$html, $title=NULL" />
<!DOCTYPE html>
<html lang="en">
<head>
<title>{$title}</title>
<link rel='stylesheet' href='css/reset.css' media='all'>
<link rel='stylesheet' href='css/fonts.css' media='all'>
<link rel='stylesheet' href='css/global.css' media='all'>
<link rel='stylesheet' href='css/layout.css' media='all'>
<link rel='stylesheet' href='css/messages.css' media='all'>
<link rel='stylesheet' href='css/misc.css' media='all'>
<link rel='stylesheet' href='css/forms.css' media='all'>
<link rel='stylesheet' href='css/typography.css' media='all'>
<link rel='stylesheet' href='css/buttons.css' media='all'>
<link rel='stylesheet' href='css/installer.css' media='all'>
<script type="text/javascript">
var IPS_TIMEOUT = 30;
</script>
<script src="js/jquery.min.js"></script>
<script src="js/multipleRedirect.js"></script>
</head>
<body class="ipsApp ipsApp_front ipsJS_none ipsClearfix ipsLayout_noBackground">
{$html|raw}
</body>
</html>
+2
View File
@@ -0,0 +1,2 @@
<ips:template parameters="$title, $content, $margins=TRUE" />
{$content|raw}
+7
View File
@@ -0,0 +1,7 @@
<ips:template parameters="" />
<div class='ipsPad_double ipsType_center'>
<a href='{url="controller=upgrade&key={$_SESSION['uniqueKey']}"}' class='ipsButton ipsButton_large ipsButton_primary'>Start Upgrade</a>
</div>
<div class='ipsType_large'>
{lang="upgrade_confirm"}
</div>
@@ -0,0 +1,8 @@
<ips:template parameters="" />
<section>
<p class='ipsMessage ipsMessage_warning'>Your community suite data or database configuration is saved in an encoding other than UTF-8. Before your site can be upgraded to the 4.0.0 Community Suite, we must convert the encoding to UTF-8.</p>
</section>
<div class='ipsPad_double ipsType_center'>
<a href='../convertutf8' class='ipsButton ipsButton_large ipsButton_primary'>Convert character set</a>
</div>
+16
View File
@@ -0,0 +1,16 @@
<ips:template parameters="$title, $message, $code, $backtrace, $showContinueUrl=false, $retryUrl=false" />
{{$mr = isset( \IPS\Request::i()->mr ) ? json_decode( urldecode( base64_decode( \IPS\Request::i()->mr ) ), true ) : array();}}
<div class='ipsMessage ipsMessage_error'>
<span class="ipsMessage_code">{$code}</span>
{lang="$message"}
<br />
{{if is_array($mr) and count($mr)}}
<small>{lang="location"}: {lang="step" sprintf="\IPS\Dispatcher::i()->step ?: 1"} {$mr[0]}. {lang="application"}: {expression="ucfirst($mr[1])"}</small>
{{endif}}
</div>
{{if $retryUrl}}
<a href="$retryUrl" class='ipsButton'>Retry?</a>
{{endif}}
{{if $showContinueUrl}}
<a href="$showContinueUrl" class='ipsButton'>Continue</a>
{{endif}}
@@ -0,0 +1,86 @@
<ips:template parameters="$title,$html,$initError=FALSE,$path=null" />
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>{$title}</title>
<link rel='stylesheet' href='css/reset.css' media='all'>
<link rel='stylesheet' href='css/fonts.css' media='all'>
<link rel='stylesheet' href='css/global.css' media='all'>
<link rel='stylesheet' href='css/layout.css' media='all'>
<link rel='stylesheet' href='css/messages.css' media='all'>
<link rel='stylesheet' href='css/misc.css' media='all'>
<link rel='stylesheet' href='css/forms.css' media='all'>
<link rel='stylesheet' href='css/typography.css' media='all'>
<link rel='stylesheet' href='css/buttons.css' media='all'>
<link rel='stylesheet' href='css/installer.css' media='all'>
<script type="text/javascript">
var IPS_TIMEOUT = 30;
</script>
<script src="js/jquery.min.js"></script>
<script src="js/multipleRedirect.js"></script>
</head>
<body class='ipsApp ipsApp_installer'>
<div id='elInstaller_wrap'>
<div id='ipsLayout_header' class='ipsClearfix' role='banner'>
<header>
<a href='/' id='elSiteTitle'><span id='elLogo'><img src='img/logo.png' alt=''></span> Upgrade IPS Community Suite 4</a>
</header>
</div>
<main id='elInstaller_body'>
{{if !$initError and ( ( \IPS\Dispatcher::i()->step != 1 AND \IPS\Dispatcher::i()->step != 8 ) || \IPS\Request::i()->start )}}
<div class='ipsPad ipsAreaBackground_light'>
<h1 class='ipsType_pageTitle'>
{lang="step" sprintf="\IPS\Dispatcher::i()->step ?: 1"}: {$title}
</h1>
</div>
<div class='ipsColumns ipsPad'>
<div class='ipsColumn ipsColumn_wide ipsPad' id='elInstaller_stepsWrap'>
<ul id='elInstaller_steps'>
{{foreach array( 1 => 'Login', 2 => 'System Check', 3 => 'License', 4 => 'Applications', 5 => 'Upgrade Options', 6 => 'Confirm', 7 => 'Upgrade' ) as $i => $lang}}
<li class='{{if \IPS\Dispatcher::i()->step == $i}}elInstaller_stepActive{{elseif \IPS\Dispatcher::i()->step > $i}}elInstaller_stepDone{{endif}}'>
<i class='{{if \IPS\Dispatcher::i()->step == $i or ( !\IPS\Dispatcher::i()->step and $i == 1 )}}fa fa-circle{{elseif \IPS\Dispatcher::i()->step > $i}}fa fa-check{{else}}fa fa-circle-o{{endif}}'></i>&nbsp;&nbsp;{$lang}
</li>
{{endforeach}}
</ul>
</div>
<div class='ipsColumn ipsColumn_fluid'>
<div class='ipsPad'>
{$html|raw}
</div>
</div>
</div>
{{elseif \IPS\Request::i()->controller === 'done'}}
<div class='ipsPad_double ipsType_center'>
<h1 class='ipsType_pageTitle' id='elInstaller_welcome'>Your IPS Community Suite 4 is ready</h1>
<p class='ipsType_normal ipsType_light'>
{lang="upgrade_complete"}
</p>
<br><br>
<a href='{expression="\IPS\Settings::i()->base_url"}' class='ipsButton ipsButton_large ipsButton_primary'>Go to the suite</a>
<br><br>
<a href="{expression="\IPS\Http\Url::ips('docs/docs')"}" target="_blank">Suite Documentation</a>
</div>
{{else}}
<div class='ipsPad_double ipsType_center'>
<h1 class='ipsType_pageTitle' id='elInstaller_welcome'>Welcome to IPS Community Suite 4</h1>
<p class='ipsType_normal ipsType_light'>
{{if $initError}}
{$initError}
{{else}}
This process will install your software for you. Be sure you have your license key and MySQL database details to hand.
{{endif}}
</p>
{{if !$initError}}
<br><br>
<a href='{url="&start=1"}' class='ipsButton ipsButton_large ipsButton_primary'>Start Upgrade</a>
{{endif}}
<br><br>
<a href="{expression="\IPS\Http\Url::ips('docs/install_guide')"}" target="_blank">Install Guide</a>
</div>
{{endif}}
</main>
</div>
</body>
</html>
@@ -0,0 +1,44 @@
<ips:template parameters="$requirements, $designerMode" />
{{$canProceed = TRUE;}}
<section>
{{if $designerMode}}
<h2 class="ipsType_sectionHead">Designers' Mode On</h2>
<ul class="ipsPad ipsType_large ipsList_checks">
{{$canProceed = FALSE;}}
<li class="fail inline">
Designers' Mode is currently enabled.
</li>
<li class='ipsType_normal'>
<a href="{url="controller=systemcheck&key={$_SESSION['uniqueKey']}&disableDesignersMode=1"}" class="ipsButton ipsButton_negative">Disable Designers' Mode now</a>
<div class='ipsType_light ipsType_small'>Disabling Designers' Mode now will <strong>not</strong> synchronize your templates.<br>If you need to save your edited files, please synchronize them via the ACP &gt; Customization &gt; Themes before disabling Designer's Mode.</div>
</li>
</ul>
{{endif}}
{{foreach $requirements['requirements'] as $k => $_requirements}}
<h2 class="ipsType_sectionHead">{$k} Requirements</h2>
<ul class="ipsPad ipsType_large ipsList_checks">
{{foreach $_requirements as $item}}
{{if !$item['success']}}{{$canProceed = FALSE;}}{{endif}}
<li class="{{if $item['success']}}success{{else}}fail{{endif}}">{$item['message']}</li>
{{endforeach}}
</ul>
{{endforeach}}
{{if isset( $requirements['advice'] ) and count( $requirements['advice'] )}}
<h2 class="ipsType_sectionHead">Recommendations</h2>
<br><br>
<p class="ipsType_normal">None of these items are required in order to continue with the upgrade right now. However, they will be required in a future version of IPS Community Suite. You should make a note of them and contact your hosting provider or system administrator after the upgrade to address them. You can re-run these checks later from the <em>Support</em> section of the Administrator Control Panel.</p>
<ul class="ipsPad ipsType_large ipsList_checks">
{{foreach $requirements['advice'] as $item}}
<li class="advisory">{$item}</li>
{{endforeach}}
</ul>
{{endif}}
</section>
<div class='ipsPad_double ipsType_center'>
{{if $canProceed}}
<a href='{url="controller=license&key={$_SESSION['uniqueKey']}"}' class='ipsButton ipsButton_large ipsButton_primary'>Continue</a>
{{else}}
<a href='' class='ipsButton ipsButton_large ipsButton_primary ipsButton_disabled'>You must correct any issues listed above before you can proceed</a>
{{endif}}
</div>
Whitespace-only changes.
+12
View File
@@ -0,0 +1,12 @@
<ips:template parameters="$form, $active" />
<section>
<h2 class="ipsType_sectionHead">License</h2>
<ul class="ipsPad ipsType_large ipsList_checks">
{{if $active === NULL}}
<li class="fail">{lang="lkey_not_providen"}</li>
<li>{$form|raw}</li>
{{else}}
<li class="fail">{lang="license_inactive"}</li>
{{endif}}
</ul>
</section>
@@ -0,0 +1,6 @@
<ips:template parameters=" " />
<div class='ipsPad_double ipsType_center'>
<h1 class='ipsType_pageTitle' id='elInstaller_welcome'>{lang="install_ready"}</h1>
<br><br>
<a href='{url="controller=install"}' class='ipsButton ipsButton_large ipsButton_primary'>{lang="install_start"}</a>
</div>
@@ -0,0 +1,17 @@
<ips:template parameters="$url, $continue_mr=0" />
<div class="ipsMultipleRedirect" data-url="{$url}" data-continue="{$continue_mr|raw}">
<noscript>
<a href='{$url->setQueryString( 'mr', $continue_mr )}' class="button">{lang="start"}</a>
</noscript>
<div class="no_js_hide">
<div class="ipsRedirect ipsRedirect_loading">
<img src="img/loading.gif" alt="" />
</div>
<div class="ipsRedirect_progress">
<div class="ipsProgressBar ipsProgressBar_animated">
<div class="ipsProgressBar_progress"></div>
</div>
</div>
<span class='ipsRedirect_message'></span>
</div>
</div>
+26
View File
@@ -0,0 +1,26 @@
<ips:template parameters="$url, $message" />
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>{lang="redirecting"}</title>
<link rel='stylesheet' href='css/reset.css' media='all'>
<link rel='stylesheet' href='css/fonts.css' media='all'>
<link rel='stylesheet' href='css/global.css' media='all'>
<link rel='stylesheet' href='css/layout.css' media='all'>
<link rel='stylesheet' href='css/messages.css' media='all'>
<link rel='stylesheet' href='css/misc.css' media='all'>
<link rel='stylesheet' href='css/forms.css' media='all'>
<link rel='stylesheet' href='css/typography.css' media='all'>
<link rel='stylesheet' href='css/buttons.css' media='all'>
<link rel='stylesheet' href='css/installer.css' media='all'>
<meta http-equiv="refresh" content="2; url={$url}" />
</head>
<body>
<p class="ipsMessage ipsMessage_info ipsRedirectMessage">
<strong>{lang="$message"}</strong><br />
<br />
{lang="redirecting_wait"}
</p>
</body>
</html>
@@ -0,0 +1,27 @@
<ips:template parameters="$json, $time" />
<section>
<h2 class="ipsType_sectionHead">{lang="upgrade_unfinished"}</h2>
<ul class="ipsPad ipsType_large ipsList_checks">
<li class="advisory">You have an unfinished upgrade from {datetime="$time" norelative="true"}</li>
<li>
<strong>{lang="upgrade_applications"}</strong>
<ul>
{{foreach( $json['session']['apps'] ) as $app}}
<li>{expression="ucfirst( $app )"}</li>
{{endforeach}}
</ul>
</li>
<li>
<strong>{lang="upgrade_status"}</strong>
<ul>
<li>{lang="status"}: {$json['step']}</li>
<li>{lang="application"}: {{if isset( $json['data'][1] )}}{$json['data'][1]}{{else}}<em>Not set</em>{{endif}}
<li>{lang="current_version"}: {{if isset( $json['data']['extra']['_current'] )}}{$json['data']['extra']['_current']}{{else}}<em>Not set</em>{{endif}}
</ul>
</li>
</ul>
</section>
<div class='ipsPad_double ipsType_center'>
<a href='{url="controller=continueupgrade&key={$_SESSION['uniqueKey']}"}' class='ipsButton ipsButton_large ipsButton_primary ipsButton_positive'>Continue Upgrade</a>
<a href='{url="controller=systemcheck&key={$_SESSION['uniqueKey']}&skippreviousupgrade=1"}' class='ipsButton ipsButton_large ipsButton_primary'>Start Fresh Upgrade</a>
</div>
@@ -0,0 +1,28 @@
<ips:template parameters="$exception, $showContinueUrl=false, $retryUrl=false" />
<div class='ipsMessage ipsMessage_error'>
<span class="ipsMessage_code">{$exception->getCode()}</span>
{$exception->getMessage()}
<br />
{{if $exception instanceof \IPS\Db\Exception}}
{{$trace = $exception->getTrace();}}
{{if $trace[3]['function'] == 'installDatabaseUpdates'}}
<small>
{expression="\IPS\ROOT_PATH"}/applications/{$trace[4]['args'][0][1]}/setup/upg_{$trace[3]['args'][0]}/queries.json{{if isset($_SESSION['lastJsonIndex'])}} - query #{$_SESSION['lastJsonIndex']}{{endif}}<br>
<pre>{$exception->query}</pre>
</small>
{{else}}
<small>
{$trace[1]['file']}::{$trace[1]['line']}<br>
<pre>{$exception->query}</pre>
</small>
{{endif}}
{{else}}
<small>{$exception->getFile()}::{$exception->getLine()}</small>
{{endif}}
</div>
{{if $retryUrl}}
<a href="$retryUrl" class='ipsButton'>Retry?</a>
{{endif}}
{{if $showContinueUrl}}
<a href="$showContinueUrl" class='ipsButton'>Continue</a>
{{endif}}
View File
Whitespace-only changes.
+6
View File
@@ -0,0 +1,6 @@
<ips:template parameters="$url" />
<a href='{$url}' class='ipsButton ipsButton_verySmall ipsButton_fullWidth ipsSocial ipsSocial_facebook'>
<span class='ipsSocial_icon'><i class='fa fa-facebook'></i></span>
<span class='ipsSocial_text'>{lang="login_facebook"}</span>
</a>
+5
View File
@@ -0,0 +1,5 @@
<ips:template parameters="$url" />
<a href='{$url}' class='ipsButton ipsButton_verySmall ipsButton_fullWidth ipsSocial ipsSocial_google'>
<span class='ipsSocial_icon'><i class='fa fa-google-plus'></i></span>
<span class='ipsSocial_text'>{lang="login_google"}</span>
</a>
View File
Whitespace-only changes.
+5
View File
@@ -0,0 +1,5 @@
<ips:template parameters="$url" />
<a href='{$url}' class='ipsButton ipsButton_verySmall ipsButton_fullWidth ipsSocial ipsSocial_linkedIn'>
<span class='ipsSocial_icon'><i class='fa fa-linkedin'></i></span>
<span class='ipsSocial_text'>{lang="login_linkedin"}</span>
</a>
+6
View File
@@ -0,0 +1,6 @@
<ips:template parameters="$url" />
<a href='{$url}' class='ipsButton ipsButton_verySmall ipsButton_fullWidth ipsSocial ipsSocial_microsoft'>
<span class='ipsSocial_icon'><i class='fa fa-windows'></i></span>
<span class='ipsSocial_text'>{lang="login_live"}</span>
</a>
+5
View File
@@ -0,0 +1,5 @@
<ips:template parameters="$url" />
<a href='{expression="str_replace( '&', '&amp;', $url )"}' class='ipsButton ipsButton_verySmall ipsButton_fullWidth ipsSocial ipsSocial_twitter'>
<span class='ipsSocial_icon'><i class='fa fa-twitter'></i></span>
<span class='ipsSocial_text'>{lang="login_twitter"}</span>
</a>