Merge branch 'master' into next
authorTim Düsterhus <duesterhus@woltlab.com>
Mon, 30 May 2016 16:50:54 +0000 (18:50 +0200)
committerTim Düsterhus <duesterhus@woltlab.com>
Mon, 30 May 2016 16:50:54 +0000 (18:50 +0200)
 Conflicts:
com.woltlab.wcf/bbcode.xml
com.woltlab.wcf/package.xml
wcfsetup/install/files/acp/templates/dataImport.tpl
wcfsetup/install/files/js/3rdParty/redactor/plugins/wbbcode.js
wcfsetup/install/files/js/3rdParty/redactor/plugins/wcombined.min.js
wcfsetup/install/files/js/3rdParty/redactor/plugins/wmonkeypatch.js
wcfsetup/install/files/js/3rdParty/redactor/plugins/wutil.js
wcfsetup/install/files/lib/system/WCF.class.php
wcfsetup/install/files/lib/system/WCFSetup.class.php
wcfsetup/install/lang/en.xml
wcfsetup/setup/template/stepShowSystemRequirements.tpl
wcfsetup/test.php

1  2 
wcfsetup/install/files/acp/templates/dataImport.tpl
wcfsetup/install/files/lib/system/WCFSetup.class.php
wcfsetup/install/files/lib/system/message/QuickReplyManager.class.php
wcfsetup/install/lang/de.xml
wcfsetup/install/lang/en.xml
wcfsetup/setup/lang/setup_de.xml
wcfsetup/setup/lang/setup_en.xml
wcfsetup/setup/template/stepShowSystemRequirements.tpl
wcfsetup/test.php

index 1e334981e29dddcfbdc53d8e36704d271547c5cf,fe3ce85050defac1b6f82d0408493964ab771a06..4135e9d4a3fc4ceca9932c442f8808d680c46e3a
        {/if}
  {else}
        <form method="post" action="{link controller='DataImport'}{/link}">
 -              <div class="container containerPadding marginTop">
 -                      <fieldset>
 -                              <legend>{lang}wcf.acp.dataImport.configure.data{/lang}</legend>
 -                              
 -                              <small>{lang}wcf.acp.dataImport.configure.data.description{/lang}</small>
 -                              
 -                              {foreach from=$supportedData key=objectTypeName item=objectTypes}
 -                                      <dl class="wide">
 -                                              <dd class="jsImportCollection">
 -                                                      <label><input type="checkbox" name="selectedData[]" value="{@$objectTypeName}" class="jsImportSection"{if $objectTypeName|in_array:$selectedData} checked="checked"{/if}/> {lang}wcf.acp.dataImport.data.{@$objectTypeName}{/lang}</label>
 -                                                      <p>
 -                                                              {foreach from=$objectTypes item=objectTypeName}
 -                                                                      <label><input type="checkbox" name="selectedData[]" value="{@$objectTypeName}" class="jsImportItem"{if $objectTypeName|in_array:$selectedData} checked="checked"{/if} /> {lang}wcf.acp.dataImport.data.{@$objectTypeName}{/lang}</label>
 -                                                              {/foreach}
 -                                                      </p>
 -                                              </dd>
 -                                      </dl>
 -                              {/foreach}
 -                              
 -                              {event name='dataFields'}
 -                      </fieldset>
 +              <section class="section">
 +                      <header class="sectionHeader">
 +                              <h2 class="sectionTitle">{lang}wcf.acp.dataImport.configure.data{/lang}</h2>
 +                              <small class="sectionDescription">{lang}wcf.acp.dataImport.configure.data.description{/lang}</small>
 +                      </header>
                        
 -                      <fieldset>
 -                              <legend>{lang}wcf.acp.dataImport.configure.settings{/lang}</legend>
 -                              
 -                              <dl>
 -                                      <dt><label for="userMergeMode">{lang}wcf.acp.dataImport.configure.settings.userMergeMode{/lang}</label></dt>
 -                                      <dd>
 -                                              <label><input type="radio" id="userMergeMode" name="userMergeMode" value="4" {if $userMergeMode == 4}checked="checked" {/if}/> {lang}wcf.acp.dataImport.configure.settings.userMergeMode.4{/lang}</label>
 -                                              <label><input type="radio" name="userMergeMode" value="5" {if $userMergeMode == 5}checked="checked" {/if}/> {lang}wcf.acp.dataImport.configure.settings.userMergeMode.5{/lang}</label>
 +                      {foreach from=$supportedData key=objectTypeName item=objectTypes}
 +                              <dl class="wide">
 +                                      <dt></dt>
 +                                      <dd class="jsImportCollection">
-                                               <label><input type="checkbox" name="selectedData[]" value="{@$objectTypeName}" class="jsImportSection"{if $objectTypeName|in_array:$selectedData}checked="checked" {/if}/> {lang}wcf.acp.dataImport.data.{@$objectTypeName}{/lang}</label>
++                                              <label><input type="checkbox" name="selectedData[]" value="{@$objectTypeName}" class="jsImportSection"{if $objectTypeName|in_array:$selectedData} checked="checked"{/if} /> {lang}wcf.acp.dataImport.data.{@$objectTypeName}{/lang}</label>
 +                                              <p>
 +                                                      {foreach from=$objectTypes item=objectTypeName}
-                                                               <label><input type="checkbox" name="selectedData[]" value="{@$objectTypeName}" class="jsImportItem"{if $objectTypeName|in_array:$selectedData}checked="checked" {/if}/> {lang}wcf.acp.dataImport.data.{@$objectTypeName}{/lang}</label>
++                                                              <label><input type="checkbox" name="selectedData[]" value="{@$objectTypeName}" class="jsImportItem"{if $objectTypeName|in_array:$selectedData} checked="checked"{/if} /> {lang}wcf.acp.dataImport.data.{@$objectTypeName}{/lang}</label>
 +                                                      {/foreach}
 +                                              </p>
                                        </dd>
                                </dl>
 -                              
 -                              {event name='settingFields'}
 -                      </fieldset>
 +                      {/foreach}
                        
 -                      <fieldset{if $errorField == 'database'} class="formError"{/if}>
 -                              <legend>{lang}wcf.acp.dataImport.configure.database{/lang}</legend>
 -                              
 -                              <dl>
 -                                      <dt><label for="dbHost">{lang}wcf.acp.dataImport.configure.database.host{/lang}</label></dt>
 -                                      <dd>
 -                                              <input type="text" id="dbHost" name="dbHost" value="{$dbHost}" class="long" />
 -                                      </dd>
 -                              </dl>
 -                              
 -                              <dl>
 -                                      <dt><label for="dbUser">{lang}wcf.acp.dataImport.configure.database.user{/lang}</label></dt>
 -                                      <dd>
 -                                              <input type="text" id="dbUser" name="dbUser" value="{$dbUser}" class="medium" />
 -                                      </dd>
 -                              </dl>
 -                              
 -                              <dl>
 -                                      <dt><label for="dbPassword">{lang}wcf.acp.dataImport.configure.database.password{/lang}</label></dt>
 -                                      <dd>
 -                                              <input type="password" id="dbPassword" name="dbPassword" value="{$dbPassword}" class="medium" autocomplete="off" />
 -                                      </dd>
 -                              </dl>
 -                              
 -                              <dl>
 -                                      <dt><label for="dbName">{lang}wcf.acp.dataImport.configure.database.name{/lang}</label></dt>
 -                                      <dd>
 -                                              <input type="text" id="dbName" name="dbName" value="{$dbName}" class="medium" />
 -                                      </dd>
 -                              </dl>
 -                              
 -                              <dl>
 -                                      <dt><label for="dbPrefix">{lang}wcf.acp.dataImport.configure.database.prefix{/lang}</label></dt>
 -                                      <dd>
 -                                              <input type="text" id="dbPrefix" name="dbPrefix" value="{$dbPrefix}" class="short" />
 -                                              {if $errorField == 'database'}
 -                                                      <small class="innerError">{lang}wcf.acp.dataImport.configure.database.error{/lang}</small>
 -                                              {/if}
 -                                      </dd>
 -                              </dl>
 -                              
 -                              {event name='databaseFields'}
 -                      </fieldset>
 +                      {event name='dataFields'}
 +              </section>
 +              
 +              <section class="section">
 +                      <h2 class="sectionTitle">{lang}wcf.acp.dataImport.configure.settings{/lang}</h2>
                        
 -                      <fieldset>
 -                              <legend>{lang}wcf.acp.dataImport.configure.fileSystem{/lang}</legend>
 -                              
 -                              <dl{if $errorField == 'fileSystemPath'} class="formError"{/if}>
 -                                      <dt><label for="fileSystemPath">{lang}wcf.acp.dataImport.configure.fileSystem.path{/lang}</label></dt>
 -                                      <dd>
 -                                              <input type="text" id="fileSystemPath" name="fileSystemPath" value="{$fileSystemPath}" class="long" />
 -                                              {if $errorField == 'fileSystemPath'}
 -                                                      <small class="innerError">{lang}wcf.acp.dataImport.configure.fileSystem.path.error{/lang}</small>
 -                                              {/if}
 -                                              <small>{lang}wcf.acp.dataImport.configure.fileSystem.path.description{/lang}</small>
 -                                      </dd>
 -                              </dl>
 -                              
 -                              {event name='fileSystemFields'}
 -                      </fieldset>
 +                      <dl>
 +                              <dt><label for="userMergeMode">{lang}wcf.acp.dataImport.configure.settings.userMergeMode{/lang}</label></dt>
 +                              <dd>
 +                                      <label><input type="radio" id="userMergeMode" name="userMergeMode" value="4" {if $userMergeMode == 4}checked="checked" {/if}/> {lang}wcf.acp.dataImport.configure.settings.userMergeMode.4{/lang}</label>
 +                                      <label><input type="radio" name="userMergeMode" value="5" {if $userMergeMode == 5}checked="checked" {/if}/> {lang}wcf.acp.dataImport.configure.settings.userMergeMode.5{/lang}</label>
 +                              </dd>
 +                      </dl>
                        
 -                      {event name='fieldsets'}
 -              </div>
 +                      {event name='settingFields'}
 +              </section>
 +              
 +              <section class="section{if $errorField == 'database'} formError{/if}">
 +                      <h2 class="sectionTitle">{lang}wcf.acp.dataImport.configure.database{/lang}</h2>
 +                      
 +                      <dl>
 +                              <dt><label for="dbHost">{lang}wcf.acp.dataImport.configure.database.host{/lang}</label></dt>
 +                              <dd>
 +                                      <input type="text" id="dbHost" name="dbHost" value="{$dbHost}" class="long" />
 +                              </dd>
 +                      </dl>
 +                      
 +                      <dl>
 +                              <dt><label for="dbUser">{lang}wcf.acp.dataImport.configure.database.user{/lang}</label></dt>
 +                              <dd>
 +                                      <input type="text" id="dbUser" name="dbUser" value="{$dbUser}" class="medium" />
 +                              </dd>
 +                      </dl>
 +                      
 +                      <dl>
 +                              <dt><label for="dbPassword">{lang}wcf.acp.dataImport.configure.database.password{/lang}</label></dt>
 +                              <dd>
 +                                      <input type="password" id="dbPassword" name="dbPassword" value="{$dbPassword}" class="medium" autocomplete="off" />
 +                              </dd>
 +                      </dl>
 +                      
 +                      <dl>
 +                              <dt><label for="dbName">{lang}wcf.acp.dataImport.configure.database.name{/lang}</label></dt>
 +                              <dd>
 +                                      <input type="text" id="dbName" name="dbName" value="{$dbName}" class="medium" />
 +                              </dd>
 +                      </dl>
 +                      
 +                      <dl>
 +                              <dt><label for="dbPrefix">{lang}wcf.acp.dataImport.configure.database.prefix{/lang}</label></dt>
 +                              <dd>
 +                                      <input type="text" id="dbPrefix" name="dbPrefix" value="{$dbPrefix}" class="short" />
 +                                      {if $errorField == 'database'}
 +                                              <small class="innerError">{lang}wcf.acp.dataImport.configure.database.error{/lang}</small>
 +                                      {/if}
 +                              </dd>
 +                      </dl>
 +                      
 +                      {event name='databaseFields'}
 +              </section>
 +              
 +              <section class="section">
 +                      <h2 class="sectionTitle">{lang}wcf.acp.dataImport.configure.fileSystem{/lang}</h2>
 +                      
 +                      <dl{if $errorField == 'fileSystemPath'} class="formError"{/if}>
 +                              <dt><label for="fileSystemPath">{lang}wcf.acp.dataImport.configure.fileSystem.path{/lang}</label></dt>
 +                              <dd>
 +                                      <input type="text" id="fileSystemPath" name="fileSystemPath" value="{$fileSystemPath}" class="long" />
 +                                      {if $errorField == 'fileSystemPath'}
 +                                              <small class="innerError">{lang}wcf.acp.dataImport.configure.fileSystem.path.error{/lang}</small>
 +                                      {/if}
 +                                      <small>{lang}wcf.acp.dataImport.configure.fileSystem.path.description{/lang}</small>
 +                              </dd>
 +                      </dl>
 +                      
 +                      {event name='fileSystemFields'}
 +              </section>
 +              
 +              {event name='sections'}
                
                <div class="formSubmit">
                        <input type="hidden" name="exporterName" value="{$exporterName}" />
Simple merge
index 756be90eef4af9845953a39475be4b599d97e860,dbcdc4194a0d56ba6438e0f81505d1cc6fe574eb..bea4765af062a19d084c1d1961ca872690e1459f
@@@ -688,13 -694,10 +689,13 @@@ Examples for medium ID detection
                <item name="wcf.acp.option.blacklist_user_agents.description"><![CDATA[Enter one user-agent per line.]]></item>
                <item name="wcf.acp.option.cache_source_memcached_host"><![CDATA[Memcached-Server]]></item>
                <item name="wcf.acp.option.cache_source_memcached_host.description"><![CDATA[One server per line, you can additionally specify a weight factor to allow load balancing, for example “localhost:11211:67” or “10.0.13.37:31337:33”.]]></item>
 +              <item name="wcf.acp.option.cache_source_redis_host"><![CDATA[Redis-Server]]></item>
 +              <item name="wcf.acp.option.cache_source_redis_host.description"><![CDATA[The server’s address, for example “localhost” or “10.0.13.37:1337”.]]></item>
                <item name="wcf.acp.option.cache_source_type"><![CDATA[Caching Method]]></item>
                <item name="wcf.acp.option.cache_source_type.description"><![CDATA[Caching methods different from “Filesystem” require special extensions or services running on your machine.]]></item>
-               <item name="wcf.acp.option.cache_source_type.disk"><![CDATA[Filesystem (default)]]></item>
-               <item name="wcf.acp.option.cache_source_type.memcached"><![CDATA[Memcached]]></item>
-               <item name="wcf.acp.option.cache_source_type.redis"><![CDATA[Redis]]></item>
+               <item name="wcf.acp.option.cache_source_type.disk"><![CDATA[Use Filesystem (default)]]></item>
+               <item name="wcf.acp.option.cache_source_type.memcached"><![CDATA[Use Memcached]]></item>
++              <item name="wcf.acp.option.cache_source_type.redis"><![CDATA[Use Redis]]></item>
                <item name="wcf.acp.option.category.general"><![CDATA[General]]></item>
                <item name="wcf.acp.option.category.general.cache"><![CDATA[Cache]]></item>
                <item name="wcf.acp.option.category.general.cache.general"><![CDATA[General]]></item>
                <item name="wcf.acp.option.http_send_x_frame_options"><![CDATA[Disallow embedding in a frame]]></item>
                <item name="wcf.acp.option.http_send_x_frame_options.description"><![CDATA[Sends the <a href="{@$__wcf->getPath()}acp/dereferrer.php?url={'http://en.wikipedia.org/wiki/Clickjacking'|rawurlencode}" class="externalURL">“X-Frame-Options”</a> header to prevent 3rd party sites from embedding this site in a frame (sends “SAMEORIGIN”).]]></item>
                <item name="wcf.acp.option.image_adapter_type"><![CDATA[Graphics Library]]></item>
-               <item name="wcf.acp.option.image_adapter_type.gd"><![CDATA[GD Graphics Library (default)]]></item>
-               <item name="wcf.acp.option.image_adapter_type.imagick"><![CDATA[ImageMagick]]></item>
+               <item name="wcf.acp.option.image_adapter_type.gd"><![CDATA[Use GD Graphics Library (default)]]></item>
+               <item name="wcf.acp.option.image_adapter_type.imagick"><![CDATA[Use ImageMagick]]></item>
                <item name="wcf.acp.option.image_adapter_type.description"><![CDATA[Library used for image processing, e.g. scaling uploaded images. “ImageMagick” is a lot faster, but is not available on every machine.]]></item>
 -              <item name="wcf.acp.option.import"><![CDATA[Restore Options]]></item>
 -              <item name="wcf.acp.option.import.error.importFailed"><![CDATA[Unable to restore options.]]></item>
 -              <item name="wcf.acp.option.import.success"><![CDATA[Options have been restored.]]></item>
 -              <item name="wcf.acp.option.import.upload"><![CDATA[Upload Options]]></item>
 -              <item name="wcf.acp.option.import.upload.description"><![CDATA[Upload previously downloaded options file.]]></item>
 -              <item name="wcf.acp.option.importAndExport"><![CDATA[Save &amp; Restore Options]]></item>
                <item name="wcf.acp.option.log_ip_address"><![CDATA[Store IP addresses]]></item>
                <item name="wcf.acp.option.log_ip_address.description"><![CDATA[Stores IP addresses for user-created content, e.g. sessions, profiles, or forum posts.]]></item>
                <item name="wcf.acp.option.mail_admin_address"><![CDATA[Administrator’s Email]]></item>
                <item name="wcf.acp.option.like_show_summary"><![CDATA[Display like summary]]></item>
                <item name="wcf.acp.option.module_user_profile_wall"><![CDATA[User profile wall]]></item>
                <item name="wcf.acp.option.category.message.sidebar"><![CDATA[Sidebar]]></item>
-               <item name="wcf.acp.option.message_sidebar_enable_online_status"><![CDATA[Display online status]]></item>
 -              <item name="wcf.acp.option.message_sidebar_enable_avatar"><![CDATA[Display author’s avatar]]></item>
+               <item name="wcf.acp.option.message_sidebar_enable_online_status"><![CDATA[Display author’s online status]]></item>
 -              <item name="wcf.acp.option.message_sidebar_enable_rank"><![CDATA[Display author’s user rank]]></item>
 -              <item name="wcf.acp.option.message_sidebar_enable_message_group_starter_icon"><![CDATA[Highlight thread starter]]></item>
                <item name="wcf.acp.option.message_sidebar_enable_likes_received"><![CDATA[Display author’s likes received]]></item>
                <item name="wcf.acp.option.message_sidebar_enable_activity_points"><![CDATA[Display author’s activity points]]></item>
                <item name="wcf.acp.option.message_sidebar_user_options"><![CDATA[Display Selected Author Profile Fields]]></item>
Simple merge
Simple merge
index 16f43c44d5d454de2a565c47935ea30de6bcd389,33bc8983526eb428f6d8ec180bcad36d1a4214eb..27a35b1b10ad13d07d10fff23a0ece156f0cccbb
  {include file='header'}
  
 -<header class="boxHeadline boxSubHeadline">
 -      <h2>{lang}wcf.global.systemRequirements.required{/lang}</h2>
 -</header>
 -
 -<div class="container containerPadding marginTop">
 -      <fieldset>
 -              <legend>{lang}wcf.global.systemRequirements.php{/lang}</legend>
 -              <dl>
 -                      <dt>{lang}wcf.global.systemRequirements.element.required{/lang} 5.3.2</dt>
 -                      <dd>
 -                              {lang}wcf.global.systemRequirements.element.yours{/lang} <span class="badge {if !$system.phpVersion.result}red{else}green{/if}">{$system.phpVersion.value}</span>
 -                              {if !$system.phpVersion.result}<small>{lang}wcf.global.systemRequirements.php.description{/lang}</small>{/if}
 -                      </dd>
 -              </dl>
 -      </fieldset>
 -      
 -      <fieldset>
 -              <legend>{lang}wcf.global.systemRequirements.memoryLimit{/lang}</legend>
 -              <dl>
 -                      <dt>{lang}wcf.global.systemRequirements.element.required{/lang} 128 M</dt>
 -                      <dd>
 -                              {lang}wcf.global.systemRequirements.element.yours{/lang} <span class="badge {if !$system.memoryLimit.result}red{else}green{/if}">{$system.memoryLimit.value}</span>
 -                              {if !$system.memoryLimit.result}<small>{lang}wcf.global.systemRequirements.memoryLimit.description{/lang}</small>{/if}
 -                      </dd>
 -              </dl>
 -      </fieldset>
 -      
 -      <fieldset>
 -              <legend>{lang}wcf.global.systemRequirements.sql{/lang}</legend>
 -              <dl>
 -                      <dt>{lang}wcf.global.systemRequirements.element.required{/lang} {lang}wcf.global.systemRequirements.active{/lang}</dt>
 -                      <dd>
 -                              {lang}wcf.global.systemRequirements.element.yours{/lang} <span class="badge {if !$system.sql.result}red{else}green{/if}">
 -                              {if !$system.sql.result}{lang}wcf.global.systemRequirements.sql.notFound{/lang}{else}
 -                                      {implode from=$system.sql.value item=$sqlType glue=', '}{lang}wcf.global.configureDB.class.{@$sqlType}{/lang}{/implode}
 -                              {/if}</span>
 -                              {if !$system.sql.result}<small>{lang}wcf.global.systemRequirements.sql.description{/lang}</small>{/if}
 -                      </dd>
 -              </dl>
 -      </fieldset>
 +<form method="post" action="install.php">
 +      <section class="section">
 +              <h2 class="sectionTitle">{lang}wcf.global.systemRequirements.required{/lang}</h2>
 +              
 +              <section class="section">
 +                      <h2 class="sectionTitle">{lang}wcf.global.systemRequirements.php{/lang}</h2>
 +                      
 +                      <div class="row rowColGap formGrid">
 +                              <dl class="col-xs-12 col-md-6">
 +                                      <dt>{lang}wcf.global.systemRequirements.element.required{/lang}</dt>
 +                                      <dd>5.5.4</dd>
 +                              </dl>
 +                              
 +                              <dl class="col-xs-12 col-md-6">
 +                                      <dt>{lang}wcf.global.systemRequirements.element.yours{/lang}</dt>
 +                                      <dd>
 +                                              <span class="badge {if !$system.phpVersion.result}red{else}green{/if}">{$system.phpVersion.value}</span>
 +                                              {if !$system.phpVersion.result}<small>{lang}wcf.global.systemRequirements.php.description{/lang}</small>{/if}
 +                                      </dd>
 +                              </dl>
 +                      </div>
 +              </section>
 +                      
 +              <section class="section">
 +                      <h2 class="sectionTitle">{lang}wcf.global.systemRequirements.memoryLimit{/lang}</h2>
 +                      
 +                      <div class="row rowColGap formGrid">
 +                              <dl class="col-xs-12 col-md-6">
 +                                      <dt>{lang}wcf.global.systemRequirements.element.required{/lang}</dt>
 +                                      <dd>128M</dd>
 +                              </dl>
 +                              
 +                              <dl class="col-xs-12 col-md-6">
 +                                      <dt>{lang}wcf.global.systemRequirements.element.yours{/lang}</dt>
 +                                      <dd>
 +                                              <span class="badge {if !$system.memoryLimit.result}red{else}green{/if}">{$system.memoryLimit.value}</span>
 +                                              {if !$system.memoryLimit.result}<small>{lang}wcf.global.systemRequirements.memoryLimit.description{/lang}</small>{/if}
 +                                      </dd>
 +                              </dl>
 +                      </div>
 +              </section>
 +              
 +              <section class="section">
 +                      <h2 class="sectionTitle">{lang}wcf.global.systemRequirements.sql{/lang}</h2>
 +                      
 +                      <div class="row rowColGap formGrid">
 +                              <dl class="col-xs-12 col-md-6">
 +                                      <dt>{lang}wcf.global.systemRequirements.element.required{/lang}</dt>
 +                                      <dd>{lang}wcf.global.systemRequirements.active{/lang}</dd>
 +                              </dl>
 +                              
 +                              <dl class="col-xs-12 col-md-6">
 +                                      <dt>{lang}wcf.global.systemRequirements.element.yours{/lang}</dt>
 +                                      <dd>
 +                                              <span class="badge {if !$system.sql.result}red{else}green{/if}">
 +                                              {if !$system.sql.result}{lang}wcf.global.systemRequirements.sql.notFound{/lang}{else}
 +                                                      MySQL 5.5.35+ / MariaDB 10.0.22+
 +                                              {/if}</span>
 +                                              {if !$system.sql.result}<small>{lang}wcf.global.systemRequirements.sql.description{/lang}</small>{/if}
 +                                      </dd>
 +                              </dl>
 +                      </div>
 +              </section>
-       </section>
-       
-       <section class="section">
-               <h2 class="sectionTitle">{lang}wcf.global.systemRequirements.recommended{/lang}</h2>
 +              
 +              <section class="section">
-                       <h2 class="sectionTitle">{lang}wcf.global.systemRequirements.uploadMaxFilesize{/lang}</h2>
++                      <h2 class="sectionTitle">{lang}wcf.global.systemRequirements.gdLib{/lang}</h2>
 +                      
 +                      <div class="row rowColGap formGrid">
 +                              <dl class="col-xs-12 col-md-6">
-                                       <dt>{lang}wcf.global.systemRequirements.element.recommended{/lang}</dt>
-                                       <dd>&gt; 0</dd>
++                                      <dt>{lang}wcf.global.systemRequirements.element.required{/lang}</dt>
++                                      <dd>2.0.0</dd>
 +                              </dl>
 +                              
 +                              <dl class="col-xs-12 col-md-6">
 +                                      <dt>{lang}wcf.global.systemRequirements.element.yours{/lang}</dt>
 +                                      <dd>
-                                               <span class="badge {if !$system.uploadMaxFilesize.result}yellow{else}green{/if}">{$system.uploadMaxFilesize.value}</span>
-                                               {if !$system.uploadMaxFilesize.result}<small>{lang}wcf.global.systemRequirements.uploadMaxFilesize.description{/lang}</small>{/if}
++                                              <span class="badge {if !$system.gdLib.result}red{else}green{/if}">{$system.gdLib.value}</span>
++                                              {if !$system.gdLib.result}<small>{lang}wcf.global.systemRequirements.gdLib.description{/lang}</small>{/if}
 +                                      </dd>
 +                              </dl>
 +                      </div>
 +              </section>
++      </section>
+       
 -      <fieldset>
 -              <legend>{lang}wcf.global.systemRequirements.gdLib{/lang}</legend>
 -              <dl>
 -                      <dt>{lang}wcf.global.systemRequirements.element.required{/lang} 2.0.0</dt>
 -                      <dd>
 -                              {lang}wcf.global.systemRequirements.element.yours{/lang} <span class="badge {if !$system.gdLib.result}red{else}green{/if}">
 -                                      {if !$system.gdLib.result}
 -                                              {lang}wcf.global.systemRequirements.gdLib.notFound{/lang}
 -                                      {else}
 -                                              {$system.gdLib.value}
 -                                      {/if}
 -                              </span>
 -                              {if !$system.gdLib.result}<small>{lang}wcf.global.systemRequirements.gdLib.description{/lang}</small>{/if}
 -                      </dd>
 -              </dl>
 -      </fieldset>
 -</div>
++      <section class="section">
++              <h2 class="sectionTitle">{lang}wcf.global.systemRequirements.recommended{/lang}</h2>
 +              
 +              <section class="section">
-                       <h2 class="sectionTitle">{lang}wcf.global.systemRequirements.gdLib{/lang}</h2>
++                      <h2 class="sectionTitle">{lang}wcf.global.systemRequirements.uploadMaxFilesize{/lang}</h2>
 +                      
 +                      <div class="row rowColGap formGrid">
 +                              <dl class="col-xs-12 col-md-6">
 +                                      <dt>{lang}wcf.global.systemRequirements.element.recommended{/lang}</dt>
-                                       <dd>2.0.0</dd>
++                                      <dd>&gt; 0</dd>
 +                              </dl>
 +                              
 +                              <dl class="col-xs-12 col-md-6">
 +                                      <dt>{lang}wcf.global.systemRequirements.element.yours{/lang}</dt>
 +                                      <dd>
-                                               <span class="badge {if !$system.gdLib.result}yellow{else}green{/if}">{$system.gdLib.value}</span>
-                                               {if !$system.gdLib.result}<small>{lang}wcf.global.systemRequirements.gdLib.description{/lang}</small>{/if}
++                                              <span class="badge {if !$system.uploadMaxFilesize.result}yellow{else}green{/if}">{$system.uploadMaxFilesize.value}</span>
++                                              {if !$system.uploadMaxFilesize.result}<small>{lang}wcf.global.systemRequirements.uploadMaxFilesize.description{/lang}</small>{/if}
 +                                      </dd>
 +                              </dl>
 +                      </div>
 +              </section>
 +      </section>
  
 -<header class="boxHeadline boxSubHeadline">
 -      <h2>{lang}wcf.global.systemRequirements.recommended{/lang}</h2>
 -</header>
 -
 -<div class="container containerPadding marginTop">
 -      <fieldset>
 -              <legend>{lang}wcf.global.systemRequirements.uploadMaxFilesize{/lang}</legend>
 -              <dl>
 -                      <dt>{lang}wcf.global.systemRequirements.element.recommended{/lang} &gt; 0</dt>
 -                      <dd>
 -                              {lang}wcf.global.systemRequirements.element.yours{/lang} <span class="badge {if !$system.uploadMaxFilesize.result}yellow{else}green{/if}">{$system.uploadMaxFilesize.value}</span>
 -                              {if !$system.uploadMaxFilesize.result}<small>{lang}wcf.global.systemRequirements.uploadMaxFilesize.description{/lang}</small>{/if}
 -                      </dd>
 -              </dl>
 -      </fieldset>
 -</div>
 -
 -<form method="post" action="install.php">
        <div class="formSubmit">
-               <input type="submit" value="{lang}wcf.global.button.next{/lang}"{if !$system.phpVersion.result || !$system.sql.result || !$system.memoryLimit.result} disabled="disabled"{/if} accesskey="s"/>
+               <input type="submit" value="{lang}wcf.global.button.next{/lang}"{if !$system.phpVersion.result || !$system.sql.result || !$system.memoryLimit.result || !$system.gdLib.result} disabled="disabled"{/if} accesskey="s"/>
                <input type="hidden" name="step" value="{@$nextStep}" />
                <input type="hidden" name="tmpFilePrefix" value="{@$tmpFilePrefix}" />
                <input type="hidden" name="languageCode" value="{@$languageCode}" />
Simple merge