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

+17
View File
@@ -0,0 +1,17 @@
<ips:template parameters="$apps, $selected" />
<input type="hidden" name="apps[core]" value="1">
<ul class='ipsField_fieldList'>
{{foreach $apps as $key => $data}}
<li>
<input type="checkbox" id='app_{$key}' {{if $key !== 'core'}}name="apps[{$key}]"{{endif}} {{if in_array( $key, $selected )}}checked{{endif}} {{if $data['disabled']}}disabled{{endif}} value='1'>
<div class='ipsField_fieldList_content'>
<label for='app_{$key}' class='ipsFieldRow_label'>{$data['name']}</label>
{{if !empty( $data['errors'] )}}
<p class="ipsMessage ipsMessage_error">
{expression="implode( '<br />', $data['errors'] )" raw="true"}
</p>
{{endif}}
</div>
</li>
{{endforeach}}
</ul>
+2
View File
@@ -0,0 +1,2 @@
<ips:template parameters="$lang, $type" />
<button type="{$type}" class='ipsButton ipsButton_primary'>{lang="$lang"}</button>
+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="$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}}
+19
View File
@@ -0,0 +1,19 @@
<ips:template parameters="$langKey, $element, $desc, $warning, $required = FALSE, $error=NULL, $prefix=NULL, $suffix=NULL, $id=NULL, $object=NULL, $form=NULL" />
<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, $class" />
<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 {{if \IPS\Dispatcher::i()->step == 1}}ipsForm_vertical{{else}}{$class}{{endif}}'>
{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}}
+2
View File
@@ -0,0 +1,2 @@
<ips:template parameters="$title, $content, $margins=TRUE, $message=FALSE" />
{$content|raw}
@@ -0,0 +1,15 @@
<ips:template parameters="$form, $path" />
<div class='ipsMessage ipsMessage_error'>
Cannot write the '{$path}/conf_global.php' file
</div>
{{if ! file_exists( $path . '/conf_global.php')}}
<p>
Please create a file in {$path} called conf_global.php.
<br />Copy and paste the contents of the box above into this new file and CHMOD to 0777.
</p>
{{else}}
<p>
Please CHMOD to conf_global.php 0777.
</p>
{{endif}}
{$form|raw}
+9
View File
@@ -0,0 +1,9 @@
<ips:template parameters="$title, $message, $code, $backtrace" />
<div class='ipsMessage ipsMessage_error'>
<span class="ipsMessage_code">{$code}</span>
{lang="$message"}
</div>
{{if $backtrace}}
<br><hr class='ipsHr'><br>
<pre>{$backtrace}</pre>
{{endif}}
@@ -0,0 +1,91 @@
<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> Install IPS Community Suite 4</a>
<!--<div class='logged_in right'>
<ul id='user_links' class='ipsList_inline'>
<li><a href="{expression="\IPS\Http\Url::ips('docs/install_guide')"}" target="_blank">{lang="install_guide"}</a></li>
</ul>
</div>-->
</header>
</div>
<main id='elInstaller_body'>
{{if \IPS\Request::i()->controller !== 'done' and !$initError and ( ( \IPS\Dispatcher::i()->step != 1 AND \IPS\Dispatcher::i()->step != 6 ) || \IPS\Request::i()->start )}}
<div class='ipsPad ipsAreaBackground_light'>
<h1 class='ipsType_pageTitle'>
Step: {$title}
</h1>
</div>
<div class='ipsColumns ipsPad'>
<div class='ipsColumn ipsColumn_wide ipsPad' id='elInstaller_stepsWrap'>
<ul id='elInstaller_steps'>
{{foreach array( 1 => 'System Check', 2 => 'License', 3 => 'Applications', 4 => 'Server Details', 5 => 'Admin', 6 => 'Install' ) 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'>
The installation process is now complete and your IPS Community Suite is now ready!
</p>
<br><br>
<a href='{url="&" base="front"}' 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}}
Before we can begin, please rename conf_global.dist.php to conf_global.php in {$path} and ensure it is writable (usually CHMOD 0777).
{{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 !== true}}
<br><br>
<a href='{url="controller=install&start=1"}' class='ipsButton ipsButton_large ipsButton_primary'>Start Installation</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,30 @@
<ips:template parameters="$requirements" />
{{$canProceed = TRUE;}}
<section>
{{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 installation 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 installation 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"}' 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.
@@ -0,0 +1,6 @@
<ips:template parameters=" " />
<div class='ipsPad_double ipsType_center'>
<h1 class='ipsType_pageTitle' id='elInstaller_welcome'>Ready to begin installation</h1>
<br><br>
<a href='{url="controller=install"}' class='ipsButton ipsButton_large ipsButton_primary'>Start Installation</a>
</div>
@@ -0,0 +1,17 @@
<ips:template parameters="$url" />
<div class="ipsMultipleRedirect" data-url="{$url}">
<noscript>
<a href='{$url->setQueryString( 'mr', 'MA==' )}' 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>
View File
Whitespace-only changes.