[fix/folders] move files back to root
This commit is contained in:
@@ -1,33 +0,0 @@
|
||||
<?php
|
||||
/**
|
||||
*
|
||||
* @package Board3 Portal v2
|
||||
* @copyright (c) Board3 Group ( www.board3.de )
|
||||
* @license http://opensource.org/licenses/gpl-license.php GNU Public License
|
||||
*
|
||||
*/
|
||||
|
||||
if (!defined('IN_PHPBB'))
|
||||
{
|
||||
exit;
|
||||
}
|
||||
|
||||
/**
|
||||
* @package module_install
|
||||
*/
|
||||
class phpbb_ext_board3_portal_acp_portal_info
|
||||
{
|
||||
public function module()
|
||||
{
|
||||
return array(
|
||||
'filename' => 'phpbb_ext_board3_portal_acp_portal_module',
|
||||
'title' => 'ACP_PORTAL',
|
||||
'version' => '2.0.0b2',
|
||||
'modes' => array(
|
||||
'config' => array('title' => 'ACP_PORTAL_GENERAL_INFO', 'auth' => 'acl_a_manage_portal', 'cat' => array('ACP_PORTAL')),
|
||||
'modules' => array('title' => 'ACP_PORTAL_MODULES', 'auth' => 'acl_a_manage_portal', 'cat' => array('ACP_PORTAL')),
|
||||
'upload_module' => array('title' => 'ACP_PORTAL_UPLOAD', 'auth' => 'acl_a_manage_portal', 'cat' => array('ACP_PORTAL')),
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
File diff suppressed because it is too large
Load Diff
Binary file not shown.
|
Before Width: | Height: | Size: 240 B |
Binary file not shown.
|
Before Width: | Height: | Size: 166 B |
Binary file not shown.
|
Before Width: | Height: | Size: 241 B |
Binary file not shown.
|
Before Width: | Height: | Size: 166 B |
@@ -1,33 +0,0 @@
|
||||
<?php
|
||||
/**
|
||||
*
|
||||
* @package Board3 Portal v2
|
||||
* @copyright (c) Board3 Group ( www.board3.de )
|
||||
* @license http://opensource.org/licenses/gpl-license.php GNU Public License
|
||||
*
|
||||
*/
|
||||
|
||||
/**
|
||||
* @package mod_version_check
|
||||
*/
|
||||
|
||||
if (!defined('IN_PHPBB'))
|
||||
{
|
||||
exit;
|
||||
}
|
||||
|
||||
class board3_portal_check_version
|
||||
{
|
||||
public function version()
|
||||
{
|
||||
global $config, $phpbb_root_path, $phpEx;
|
||||
|
||||
return array(
|
||||
'author' => 'Saint_hh',
|
||||
'title' => 'Board3 Portal',
|
||||
'tag' => 'board3_portal_v2_dev',
|
||||
'version' => $config['board3_portal_version'],
|
||||
'file' => array('board3.de', 'updatecheck', 'board3_portal.xml'),
|
||||
);
|
||||
}
|
||||
}
|
||||
@@ -1,434 +0,0 @@
|
||||
/**
|
||||
* bbCode control by subBlue design [ www.subBlue.com ]
|
||||
* Includes unixsafe colour palette selector by SHS`
|
||||
* stripped parts that are useless for the portal
|
||||
*/
|
||||
|
||||
var panels = new Array('options-panel', 'attach-panel', 'poll-panel');
|
||||
var show_panel = 'options-panel';
|
||||
|
||||
/**
|
||||
* Shows the help messages in the helpline window
|
||||
*/
|
||||
function helpline(help)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Fix a bug involving the TextRange object. From
|
||||
* http://www.frostjedi.com/terra/scripts/demo/caretBug.html
|
||||
*/
|
||||
function initInsertions()
|
||||
{
|
||||
var doc;
|
||||
|
||||
if (document.forms[form_name])
|
||||
{
|
||||
doc = document;
|
||||
}
|
||||
else
|
||||
{
|
||||
doc = opener.document;
|
||||
}
|
||||
|
||||
var textarea = doc.getElementById(text_name);
|
||||
|
||||
if (is_ie && typeof(baseHeight) != 'number')
|
||||
{
|
||||
textarea.focus();
|
||||
baseHeight = doc.selection.createRange().duplicate().boundingHeight;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* bbstyle
|
||||
*/
|
||||
function bbstyle(bbnumber)
|
||||
{
|
||||
if (bbnumber != -1)
|
||||
{
|
||||
bbfontstyle(bbtags[bbnumber], bbtags[bbnumber+1]);
|
||||
}
|
||||
else
|
||||
{
|
||||
insert_text('[*]');
|
||||
document.getElementById(text_name).focus();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Apply bbcodes
|
||||
*/
|
||||
function bbfontstyle(bbopen, bbclose)
|
||||
{
|
||||
theSelection = false;
|
||||
|
||||
var textarea = document.getElementById(text_name);
|
||||
|
||||
textarea.focus();
|
||||
|
||||
if ((clientVer >= 4) && is_ie && is_win)
|
||||
{
|
||||
// Get text selection
|
||||
theSelection = document.selection.createRange().text;
|
||||
|
||||
if (theSelection)
|
||||
{
|
||||
// Add tags around selection
|
||||
document.selection.createRange().text = bbopen + theSelection + bbclose;
|
||||
document.getElementById(text_name).focus();
|
||||
theSelection = '';
|
||||
return;
|
||||
}
|
||||
}
|
||||
else if (document.getElementById(text_name).selectionEnd && (document.getElementById(text_name).selectionEnd - document.getElementById(text_name).selectionStart > 0))
|
||||
{
|
||||
mozWrap(document.getElementById(text_name), bbopen, bbclose);
|
||||
document.getElementById(text_name).focus();
|
||||
theSelection = '';
|
||||
return;
|
||||
}
|
||||
|
||||
//The new position for the cursor after adding the bbcode
|
||||
var caret_pos = getCaretPosition(textarea).start;
|
||||
var new_pos = caret_pos + bbopen.length;
|
||||
|
||||
// Open tag
|
||||
insert_text(bbopen + bbclose);
|
||||
|
||||
// Center the cursor when we don't have a selection
|
||||
// Gecko and proper browsers
|
||||
if (!isNaN(textarea.selectionStart))
|
||||
{
|
||||
textarea.selectionStart = new_pos;
|
||||
textarea.selectionEnd = new_pos;
|
||||
}
|
||||
// IE
|
||||
else if (document.selection)
|
||||
{
|
||||
var range = textarea.createTextRange();
|
||||
range.move("character", new_pos);
|
||||
range.select();
|
||||
storeCaret(textarea);
|
||||
}
|
||||
|
||||
textarea.focus();
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Insert text at position
|
||||
*/
|
||||
function insert_text(text, spaces, popup)
|
||||
{
|
||||
var textarea;
|
||||
|
||||
if (!popup)
|
||||
{
|
||||
textarea = document.getElementById(text_name);
|
||||
}
|
||||
else
|
||||
{
|
||||
textarea = opener.document.getElementById(text_name);
|
||||
}
|
||||
if (spaces)
|
||||
{
|
||||
text = ' ' + text + ' ';
|
||||
}
|
||||
|
||||
if (!isNaN(textarea.selectionStart))
|
||||
{
|
||||
var sel_start = textarea.selectionStart;
|
||||
var sel_end = textarea.selectionEnd;
|
||||
|
||||
mozWrap(textarea, text, '')
|
||||
textarea.selectionStart = sel_start + text.length;
|
||||
textarea.selectionEnd = sel_end + text.length;
|
||||
}
|
||||
else if (textarea.createTextRange && textarea.caretPos)
|
||||
{
|
||||
if (baseHeight != textarea.caretPos.boundingHeight)
|
||||
{
|
||||
textarea.focus();
|
||||
storeCaret(textarea);
|
||||
}
|
||||
|
||||
var caret_pos = textarea.caretPos;
|
||||
caret_pos.text = caret_pos.text.charAt(caret_pos.text.length - 1) == ' ' ? caret_pos.text + text + ' ' : caret_pos.text + text;
|
||||
}
|
||||
else
|
||||
{
|
||||
textarea.value = textarea.value + text;
|
||||
}
|
||||
if (!popup)
|
||||
{
|
||||
textarea.focus();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Add inline attachment at position
|
||||
*/
|
||||
function attach_inline(index, filename)
|
||||
{
|
||||
insert_text('[attachment=' + index + ']' + filename + '[/attachment]');
|
||||
document.getElementById(text_name).focus();
|
||||
}
|
||||
|
||||
/**
|
||||
* Add quote text to message
|
||||
*/
|
||||
function addquote(post_id, username)
|
||||
{
|
||||
var message_name = 'message_' + post_id;
|
||||
var theSelection = '';
|
||||
var divarea = false;
|
||||
|
||||
if (document.all)
|
||||
{
|
||||
divarea = document.all[message_name];
|
||||
}
|
||||
else
|
||||
{
|
||||
divarea = document.getElementById(message_name);
|
||||
}
|
||||
|
||||
// Get text selection - not only the post content :(
|
||||
if (window.getSelection)
|
||||
{
|
||||
theSelection = window.getSelection().toString();
|
||||
}
|
||||
else if (document.getSelection)
|
||||
{
|
||||
theSelection = document.getSelection();
|
||||
}
|
||||
else if (document.selection)
|
||||
{
|
||||
theSelection = document.selection.createRange().text;
|
||||
}
|
||||
|
||||
if (theSelection == '' || typeof theSelection == 'undefined' || theSelection == null)
|
||||
{
|
||||
if (divarea.innerHTML)
|
||||
{
|
||||
theSelection = divarea.innerHTML.replace(/<br>/ig, '\n');
|
||||
theSelection = theSelection.replace(/<br\/>/ig, '\n');
|
||||
theSelection = theSelection.replace(/<\;/ig, '<');
|
||||
theSelection = theSelection.replace(/>\;/ig, '>');
|
||||
theSelection = theSelection.replace(/&\;/ig, '&');
|
||||
theSelection = theSelection.replace(/ \;/ig, ' ');
|
||||
}
|
||||
else if (document.all)
|
||||
{
|
||||
theSelection = divarea.innerText;
|
||||
}
|
||||
else if (divarea.textContent)
|
||||
{
|
||||
theSelection = divarea.textContent;
|
||||
}
|
||||
else if (divarea.firstChild.nodeValue)
|
||||
{
|
||||
theSelection = divarea.firstChild.nodeValue;
|
||||
}
|
||||
}
|
||||
|
||||
if (theSelection)
|
||||
{
|
||||
if (bbcodeEnabled)
|
||||
{
|
||||
insert_text('[quote="' + username + '"]' + theSelection + '[/quote]');
|
||||
}
|
||||
else
|
||||
{
|
||||
var lines = split_lines(theSelection);
|
||||
for (i = 0; i < lines.length; i++)
|
||||
{
|
||||
insert_text('> ' + lines[i] + '\n')
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
function split_lines(text)
|
||||
{
|
||||
var lines = text.split('\n');
|
||||
var splitLines = new Array();
|
||||
var j = 0;
|
||||
for(i = 0; i < lines.length; i++)
|
||||
{
|
||||
if (lines[i].length <= 80)
|
||||
{
|
||||
splitLines[j] = lines[i];
|
||||
j++;
|
||||
}
|
||||
else
|
||||
{
|
||||
var line = lines[i];
|
||||
do
|
||||
{
|
||||
var splitAt = line.indexOf(' ', 80);
|
||||
|
||||
if (splitAt == -1)
|
||||
{
|
||||
splitLines[j] = line;
|
||||
j++
|
||||
}
|
||||
else
|
||||
{
|
||||
splitLines[j] = line.substring(0, splitAt);
|
||||
line = line.substring(splitAt);
|
||||
j++;
|
||||
}
|
||||
}
|
||||
while(splitAt != -1)
|
||||
}
|
||||
}
|
||||
return splitLines;
|
||||
}
|
||||
/**
|
||||
* From http://www.massless.org/mozedit/
|
||||
*/
|
||||
function mozWrap(txtarea, open, close)
|
||||
{
|
||||
var selLength = (typeof(txtarea.textLength) == 'undefined') ? txtarea.value.length : txtarea.textLength;
|
||||
var selStart = txtarea.selectionStart;
|
||||
var selEnd = txtarea.selectionEnd;
|
||||
var scrollTop = txtarea.scrollTop;
|
||||
|
||||
if (selEnd == 1 || selEnd == 2)
|
||||
{
|
||||
selEnd = selLength;
|
||||
}
|
||||
|
||||
var s1 = (txtarea.value).substring(0,selStart);
|
||||
var s2 = (txtarea.value).substring(selStart, selEnd)
|
||||
var s3 = (txtarea.value).substring(selEnd, selLength);
|
||||
|
||||
txtarea.value = s1 + open + s2 + close + s3;
|
||||
txtarea.selectionStart = selStart + open.length;
|
||||
txtarea.selectionEnd = selEnd + open.length;
|
||||
txtarea.focus();
|
||||
txtarea.scrollTop = scrollTop;
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Insert at Caret position. Code from
|
||||
* http://www.faqts.com/knowledge_base/view.phtml/aid/1052/fid/130
|
||||
*/
|
||||
function storeCaret(textEl)
|
||||
{
|
||||
if (textEl.createTextRange)
|
||||
{
|
||||
textEl.caretPos = document.selection.createRange().duplicate();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Color pallette
|
||||
*/
|
||||
function colorPalette(dir, width, height)
|
||||
{
|
||||
var r = 0, g = 0, b = 0;
|
||||
var numberList = new Array(6);
|
||||
var color = '';
|
||||
|
||||
numberList[0] = '00';
|
||||
numberList[1] = '40';
|
||||
numberList[2] = '80';
|
||||
numberList[3] = 'BF';
|
||||
numberList[4] = 'FF';
|
||||
|
||||
document.writeln('<table cellspacing="1" cellpadding="0" border="0">');
|
||||
|
||||
for (r = 0; r < 5; r++)
|
||||
{
|
||||
if (dir == 'h')
|
||||
{
|
||||
document.writeln('<tr>');
|
||||
}
|
||||
|
||||
for (g = 0; g < 5; g++)
|
||||
{
|
||||
if (dir == 'v')
|
||||
{
|
||||
document.writeln('<tr>');
|
||||
}
|
||||
|
||||
for (b = 0; b < 5; b++)
|
||||
{
|
||||
color = String(numberList[r]) + String(numberList[g]) + String(numberList[b]);
|
||||
document.write('<td bgcolor="#' + color + '" style="width: ' + width + 'px; height: ' + height + 'px;">');
|
||||
document.write('<a href="#" onclick="bbfontstyle(\'[color=#' + color + ']\', \'[/color]\'); return false;" style="margin: -4px 0px -4px 2px;"><img src="images/spacer.gif" width="' + width + '" height="' + (height+10) + '" alt="#' + color + '" title="#' + color + '" style="margin: -4px;" /></a>');
|
||||
document.writeln('</td>');
|
||||
}
|
||||
|
||||
if (dir == 'v')
|
||||
{
|
||||
document.writeln('</tr>');
|
||||
}
|
||||
}
|
||||
|
||||
if (dir == 'h')
|
||||
{
|
||||
document.writeln('</tr>');
|
||||
}
|
||||
}
|
||||
document.writeln('</table>');
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Caret Position object
|
||||
*/
|
||||
function caretPosition()
|
||||
{
|
||||
var start = null;
|
||||
var end = null;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Get the caret position in an textarea
|
||||
*/
|
||||
function getCaretPosition(txtarea)
|
||||
{
|
||||
var caretPos = new caretPosition();
|
||||
|
||||
// simple Gecko/Opera way
|
||||
if(txtarea.selectionStart || txtarea.selectionStart == 0)
|
||||
{
|
||||
caretPos.start = txtarea.selectionStart;
|
||||
caretPos.end = txtarea.selectionEnd;
|
||||
}
|
||||
// dirty and slow IE way
|
||||
else if(document.selection)
|
||||
{
|
||||
|
||||
// get current selection
|
||||
var range = document.selection.createRange();
|
||||
|
||||
// a new selection of the whole textarea
|
||||
var range_all = document.body.createTextRange();
|
||||
range_all.moveToElementText(txtarea);
|
||||
|
||||
// calculate selection start point by moving beginning of range_all to beginning of range
|
||||
var sel_start;
|
||||
for (sel_start = 0; range_all.compareEndPoints('StartToStart', range) < 0; sel_start++)
|
||||
{
|
||||
range_all.moveStart('character', 1);
|
||||
}
|
||||
|
||||
txtarea.sel_start = sel_start;
|
||||
|
||||
// we ignore the end value for IE, this is already dirty enough and we don't need it
|
||||
caretPos.start = txtarea.sel_start;
|
||||
caretPos.end = txtarea.sel_start;
|
||||
}
|
||||
|
||||
return caretPos;
|
||||
}
|
||||
@@ -1,212 +0,0 @@
|
||||
<!-- INCLUDE overall_header.html -->
|
||||
|
||||
<a name="maincontent"></a>
|
||||
|
||||
<h1>{L_TITLE}</h1>
|
||||
|
||||
<p>{L_TITLE_EXPLAIN}</p>
|
||||
|
||||
<!-- IF S_ERROR -->
|
||||
<div class="errorbox">
|
||||
<h3>{L_WARNING}</h3>
|
||||
<p>{ERROR_MSG}</p>
|
||||
</div>
|
||||
<!-- ENDIF -->
|
||||
|
||||
<!-- IF S_EDIT -->
|
||||
<form id="acp_portal_links" method="post" action="{U_ACTION}">
|
||||
|
||||
<fieldset>
|
||||
<legend>{L_ACP_PORTAL_EVENTS}</legend>
|
||||
<dl>
|
||||
<dt><label for="event_title">{L_EVENT_TITLE}:</label></dt>
|
||||
<dd><input name="event_title" type="text" id="event_title" value="{EVENT_TITLE}" maxlength="255" /></dd>
|
||||
</dl>
|
||||
<dl>
|
||||
<dt><label for="event_desc">{L_EVENT_DESC}:</label></dt>
|
||||
<dd><textarea id="event_desc" rows="6" cols="6" name="event_desc">{EVENT_DESC}</textarea></dd>
|
||||
</dl>
|
||||
<dl>
|
||||
<dt>
|
||||
<label for="event_start_day">{L_ACP_PORTAL_EVENT_START_DAY}:</label><br />
|
||||
<span>{L_ACP_PORTAL_EVENT_START_DAY_EXP}</span>
|
||||
</dt>
|
||||
<dd><input name="event_start_day" type="text" id="event_start_day" value="{EVENT_START_DAY}" maxlength="255" /></dd>
|
||||
</dl>
|
||||
<dl>
|
||||
<dt>
|
||||
<label for="event_start_time">{L_ACP_PORTAL_EVENT_START_TIME}:</label><br />
|
||||
<span>{L_ACP_PORTAL_EVENT_START_TIME_EXP}</span>
|
||||
</dt>
|
||||
<dd><input name="event_start_time" type="text" id="event_start_time" value="{EVENT_START_TIME}" maxlength="255" /></dd>
|
||||
</dl>
|
||||
<dl>
|
||||
<dt><label for="event_all_day">{L_EVENT_ALL_DAY}:</label></dt>
|
||||
<dd>
|
||||
<label><input onchange="dE('end', -1)" type="radio" class="radio" name="event_all_day" value="1" id="event_all_day"<!-- IF EVENT_ALL_DAY --> checked="checked"<!-- ENDIF --> />{L_YES}</label>
|
||||
<label><input onchange="dE('end', 1)" type="radio" class="radio" name="event_all_day" value="0"<!-- IF not EVENT_ALL_DAY --> checked="checked"<!-- ENDIF --> /> {L_NO}</label>
|
||||
</dd>
|
||||
</dl>
|
||||
<div id="end"<!-- IF EVENT_ALL_DAY -->style="display: none;"<!-- ENDIF -->>
|
||||
<dl>
|
||||
<dt>
|
||||
<label for="event_end_day">{L_ACP_PORTAL_EVENT_END_DAY}:</label><br />
|
||||
<span>{L_ACP_PORTAL_EVENT_END_DAY_EXP}</span>
|
||||
</dt>
|
||||
<dd><input name="event_end_day" type="text" id="event_end_day" value="{EVENT_END_DAY}" maxlength="255" /></dd>
|
||||
</dl>
|
||||
<dl>
|
||||
<dt>
|
||||
<label for="event_end_time">{L_ACP_PORTAL_EVENT_END_TIME}:</label><br />
|
||||
<span>{L_ACP_PORTAL_EVENT_END_TIME_EXP}</span>
|
||||
</dt>
|
||||
<dd><input name="event_end_time" type="text" id="event_end_time" value="{EVENT_END_TIME}" maxlength="255" /></dd>
|
||||
</dl>
|
||||
</div>
|
||||
<dl>
|
||||
<dt>
|
||||
<label for="event_url">{L_EVENT_LINK}:</label><br />
|
||||
<span>{L_EVENT_LINK_EXP}</span>
|
||||
</dt>
|
||||
<dd><input name="event_url" type="text" id="event_url" value="{EVENT_URL}" maxlength="255" /></dd>
|
||||
</dl>
|
||||
<dl>
|
||||
<dt>
|
||||
<label for="permission-setting-calendar">{L_ACP_PORTAL_CALENDAR_PERMISSION}:</label><br />
|
||||
<span>{L_ACP_PORTAL_CALENDAR_PERMISSION_EXP}</span>
|
||||
</dt>
|
||||
<dd>
|
||||
<select id="permission-setting-calendar" size="10" multiple="multiple" name="permission-setting-calendar[]">
|
||||
<!-- BEGIN permission_setting_calendar -->
|
||||
<option value="{permission_setting_calendar.GROUP_ID}"<!-- IF permission_setting_calendar.SELECTED -->selected="selected"<!-- ENDIF -->>{permission_setting_calendar.GROUP_NAME}</option>
|
||||
<!-- END permission_setting_calendar -->
|
||||
</select>
|
||||
</dd>
|
||||
</dl>
|
||||
<p class="submit-buttons">
|
||||
<input type="hidden" name="action" value="save" />
|
||||
|
||||
<input class="button1" type="submit" id="submit" name="submit" value="{L_SUBMIT}" />
|
||||
<input class="button2" type="reset" id="reset" name="reset" value="{L_RESET}" />
|
||||
{S_FORM_TOKEN}
|
||||
</p>
|
||||
</fieldset>
|
||||
</form>
|
||||
|
||||
<!-- ELSE -->
|
||||
<form id="acp_portal_calendar" method="post" action="{U_ACTION}">
|
||||
<!-- IF SHOW_MODULE_OPTIONS -->
|
||||
<fieldset>
|
||||
<legend>{L_MODULE_OPTIONS}</legend>
|
||||
<dl>
|
||||
<dt><label for="module_name">{L_MODULE_NAME}:</label><br /><span>{L_MODULE_NAME_EXP}</span></dt>
|
||||
<dd><input id="module_name" type="text" value="{MODULE_NAME}" name="module_name" maxlength="255" size="64" /></dd>
|
||||
</dl>
|
||||
<!-- IF MODULE_SHOW_IMAGE -->
|
||||
<dl>
|
||||
<dt><label for="module_image">{L_MODULE_IMAGE}:</label><br /><span>{L_MODULE_IMAGE_EXP}</span></dt>
|
||||
<dd><input id="module_image" type="text" value="{MODULE_IMAGE}" name="module_image" maxlength="255" size="64" /></dd>
|
||||
<!-- IF MODULE_IMAGE_SRC --><dd><img src="{MODULE_IMAGE_SRC}" alt="{L_MODULE_IMAGE}" /></dd><!-- ENDIF -->
|
||||
</dl>
|
||||
<!-- IF MODULE_IMAGE_SRC -->
|
||||
<dl>
|
||||
<dt><label for="module_img_width">{L_MODULE_IMAGE_WIDTH}:</label><br /><span>{L_MODULE_IMAGE_WIDTH_EXP}</span></dt>
|
||||
<dd><input id="module_img_width" type="text" value="{MODULE_IMAGE_WIDTH}" name="module_img_width" maxlength="3" size="3" />px</dd>
|
||||
</dl>
|
||||
<dl>
|
||||
<dt><label for="module_img_height">{L_MODULE_IMAGE_HEIGHT}:</label><br /><span>{L_MODULE_IMAGE_HEIGHT_EXP}</span></dt>
|
||||
<dd><input id="module_img_height" type="text" value="{MODULE_IMAGE_HEIGHT}" name="module_img_height" maxlength="3" size="3" />px</dd>
|
||||
</dl>
|
||||
<!-- ENDIF -->
|
||||
<!-- ENDIF -->
|
||||
<dl>
|
||||
<dt><label for="module_reset">{L_MODULE_RESET}:</label><br /><span style="color: #BC2A4D;">{L_MODULE_RESET_EXP}</span></dt>
|
||||
<dd><input id="module_reset" type="checkbox" value="1" name="module_reset" /></dd>
|
||||
</dl>
|
||||
<dl>
|
||||
<dt><label for="module_status">{L_MODULE_STATUS}:</label></dt>
|
||||
<dd>
|
||||
<label><input type="radio" class="radio" name="module_status" value="1" id="module_status"<!-- IF MODULE_ENABLED --> checked="checked"<!-- ENDIF --> />{L_YES}</label>
|
||||
<label><input type="radio" class="radio" name="module_status" value="0"<!-- IF not MODULE_ENABLED --> checked="checked"<!-- ENDIF --> /> {L_NO}</label>
|
||||
</dd>
|
||||
</dl>
|
||||
<!-- IF permission_setting -->
|
||||
<dl>
|
||||
<dt><label for="permission-setting">{L_MODULE_PERMISSIONS}:</label><br /><span>{L_MODULE_PERMISSIONS_EXP}</span></dt>
|
||||
<dd>
|
||||
<select id="permission-setting" size="10" multiple="multiple" name="permission-setting[]">
|
||||
<!-- BEGIN permission_setting -->
|
||||
<option value="{permission_setting.GROUP_ID}"<!-- IF permission_setting.SELECTED -->selected="selected"<!-- ENDIF -->>{permission_setting.GROUP_NAME}</option>
|
||||
<!-- END permission_setting -->
|
||||
</select>
|
||||
</dd>
|
||||
</dl>
|
||||
<!-- ENDIF -->
|
||||
</fieldset>
|
||||
<!-- ENDIF -->
|
||||
<!-- BEGIN options -->
|
||||
<!-- IF options.S_LEGEND -->
|
||||
<!-- IF not options.S_FIRST_ROW -->
|
||||
</fieldset>
|
||||
<!-- ENDIF -->
|
||||
<fieldset>
|
||||
<legend>{options.LEGEND}</legend>
|
||||
<!-- ELSE -->
|
||||
|
||||
<dl>
|
||||
<dt><label for="{options.KEY}">{options.TITLE}:</label><!-- IF options.S_EXPLAIN --><br /><span>{options.TITLE_EXPLAIN}</span><!-- ENDIF --></dt>
|
||||
<dd>{options.CONTENT}</dd>
|
||||
</dl>
|
||||
|
||||
<!-- ENDIF -->
|
||||
<!-- END options -->
|
||||
</fieldset>
|
||||
|
||||
<fieldset>
|
||||
<legend>{L_ACP_PORTAL_EVENTS}</legend>
|
||||
<fieldset class="tabulated">
|
||||
|
||||
<p class="quick">
|
||||
<input class="button2" name="add" type="submit" value="{L_ADD_EVENT}" />
|
||||
</p>
|
||||
|
||||
<table cellspacing="1">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>{L_EVENT_TITLE}</th>
|
||||
<th>{L_EVENT_DESC}</th>
|
||||
<th>{L_EVENT_TIME}</th>
|
||||
<th>{L_EVENT_LINK}</th>
|
||||
<th>{L_ACTION}</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<!-- BEGIN events -->
|
||||
<!-- IF events.S_ROW_COUNT is even --><tr class="row1"><!-- ELSE --><tr class="row2"><!-- ENDIF -->
|
||||
<td style="text-align: center;">{events.EVENT_TITLE}</td>
|
||||
<td style="text-align: center;">{events.EVENT_DESC}</td>
|
||||
<td style="text-align: center;"><!-- IF events.EVENT_END -->{L_EVENT_START}: {events.EVENT_START} | {L_EVENT_END}: {events.EVENT_END}<!-- ELSE -->{L_EVENT_TIME}: {events.EVENT_START}<!-- IF events.EVENT_ALL_DAY --> | {L_EVENT_ALL_DAY}<!-- ENDIF --><!-- ENDIF --></td>
|
||||
<td style="text-align: center;"><a href="{events.EVENT_URL}" alt="{events.EVENT_TITLE}">{events.EVENT_URL_RAW}</td>
|
||||
<td style="text-align: center;">
|
||||
<a href="{events.U_EDIT}">{ICON_EDIT}</a> <a href="{events.U_DELETE}">{ICON_DELETE}</a>
|
||||
</td>
|
||||
</tr>
|
||||
<!-- BEGINELSE -->
|
||||
<tr class="row1">
|
||||
<td style="text-align: center;" colspan="5">{L_NO_EVENTS}</td>
|
||||
</tr>
|
||||
<!-- END events -->
|
||||
</tbody>
|
||||
</table>
|
||||
<p class="submit-buttons">
|
||||
<input class="button1" type="submit" id="submit" name="submit" value="{L_SUBMIT}" />
|
||||
<input class="button2" type="reset" id="reset" name="reset" value="{L_RESET}" />
|
||||
</p>
|
||||
{S_FORM_TOKEN}
|
||||
</fieldset>
|
||||
</fieldset>
|
||||
</form>
|
||||
|
||||
<!-- ENDIF -->
|
||||
|
||||
<!-- INCLUDE overall_footer.html -->
|
||||
@@ -1,126 +0,0 @@
|
||||
<!-- INCLUDE overall_header.html -->
|
||||
|
||||
<a name="maincontent"></a>
|
||||
|
||||
<h1>{L_TITLE}</h1>
|
||||
|
||||
<p>{L_TITLE_EXPLAIN}</p>
|
||||
|
||||
<!-- IF S_ERROR -->
|
||||
<div class="errorbox">
|
||||
<h3>{L_WARNING}</h3>
|
||||
<p>{ERROR_MSG}</p>
|
||||
</div>
|
||||
<!-- ENDIF -->
|
||||
|
||||
<!-- BEGIN mods -->
|
||||
|
||||
<fieldset>
|
||||
<legend>{L_VERSION_CHECK}</legend>
|
||||
<p style="font-weight: bold; color: <!-- IF mods.S_UP_TO_DATE -->#228822<!-- ELSE -->#BC2A4D<!-- ENDIF -->;">{mods.UP_TO_DATE}</p>
|
||||
<dl>
|
||||
<dt><label>{L_CURRENT_VERSION}</label></dt>
|
||||
<dd><strong>{mods.CURRENT_VERSION}</strong></dd>
|
||||
</dl>
|
||||
<dl>
|
||||
<dt><label>{L_LATEST_VERSION}</label></dt>
|
||||
<dd><strong>{mods.LATEST_VERSION}</strong></dd>
|
||||
</dl>
|
||||
<!-- IF not mods.S_UP_TO_DATE -->
|
||||
<dl>
|
||||
<dt><label>{L_DOWNLOAD_LATEST}</label></dt>
|
||||
<dd><strong><a href="{mods.DOWNLOAD}">{L_DOWNLOAD} {mods.TITLE} {mods.LATEST_VERSION}</a></strong></dd>
|
||||
</dl>
|
||||
<dl>
|
||||
<dt><label>{L_ANNOUNCEMENT_TOPIC}</label></dt>
|
||||
<dd><strong><a href="{mods.ANNOUNCEMENT}">{L_RELEASE_ANNOUNCEMENT}</a></strong></dd>
|
||||
</dl>
|
||||
<!-- ENDIF -->
|
||||
</fieldset>
|
||||
<!-- END mods -->
|
||||
<form id="acp_portal_config" method="post" action="{U_ACTION}">
|
||||
<!-- IF SHOW_MODULE_OPTIONS -->
|
||||
<fieldset>
|
||||
<legend>{L_MODULE_OPTIONS}</legend>
|
||||
<!-- IF MODULE_NAME -->
|
||||
<dl>
|
||||
<dt><label for="module_name">{L_MODULE_NAME}:</label><br /><span>{L_MODULE_NAME_EXP}</span></dt>
|
||||
<dd><input id="module_name" type="text" value="{MODULE_NAME}" name="module_name" maxlength="255" size="64" /></dd>
|
||||
</dl>
|
||||
<!-- ENDIF -->
|
||||
<!-- IF MODULE_SHOW_IMAGE -->
|
||||
<dl>
|
||||
<dt><label for="module_image">{L_MODULE_IMAGE}:</label><br /><span>{L_MODULE_IMAGE_EXP}</span></dt>
|
||||
<dd><input id="module_image" type="text" value="{MODULE_IMAGE}" name="module_image" maxlength="255" size="64" /></dd>
|
||||
<!-- IF MODULE_IMAGE_SRC --><dd><img src="{MODULE_IMAGE_SRC}" alt="{L_MODULE_IMAGE}" /></dd><!-- ENDIF -->
|
||||
</dl>
|
||||
<!-- IF MODULE_IMAGE_SRC -->
|
||||
<dl>
|
||||
<dt><label for="module_img_width">{L_MODULE_IMAGE_WIDTH}:</label><br /><span>{L_MODULE_IMAGE_WIDTH_EXP}</span></dt>
|
||||
<dd><input id="module_img_width" type="text" value="{MODULE_IMAGE_WIDTH}" name="module_img_width" maxlength="3" size="3" />px</dd>
|
||||
</dl>
|
||||
<dl>
|
||||
<dt><label for="module_img_height">{L_MODULE_IMAGE_HEIGHT}:</label><br /><span>{L_MODULE_IMAGE_HEIGHT_EXP}</span></dt>
|
||||
<dd><input id="module_img_height" type="text" value="{MODULE_IMAGE_HEIGHT}" name="module_img_height" maxlength="3" size="3" />px</dd>
|
||||
</dl>
|
||||
<!-- ENDIF -->
|
||||
<!-- ENDIF -->
|
||||
<dl>
|
||||
<dt><label for="module_reset">{L_MODULE_RESET}:</label><br /><span style="color: #BC2A4D;">{L_MODULE_RESET_EXP}</span></dt>
|
||||
<dd><input id="module_reset" type="checkbox" value="1" name="module_reset" /></dd>
|
||||
</dl>
|
||||
<dl>
|
||||
<dt><label for="module_status">{L_MODULE_STATUS}:</label></dt>
|
||||
<dd>
|
||||
<label><input type="radio" class="radio" name="module_status" value="1" id="module_status"<!-- IF MODULE_ENABLED --> checked="checked"<!-- ENDIF --> />{L_YES}</label>
|
||||
<label><input type="radio" class="radio" name="module_status" value="0"<!-- IF not MODULE_ENABLED --> checked="checked"<!-- ENDIF --> /> {L_NO}</label>
|
||||
</dd>
|
||||
</dl>
|
||||
<!-- IF permission_setting -->
|
||||
<dl>
|
||||
<dt><label for="permission-setting">{L_MODULE_PERMISSIONS}:</label><br /><span>{L_MODULE_PERMISSIONS_EXP}</span></dt>
|
||||
<dd>
|
||||
<select id="permission-setting" size="10" multiple="multiple" name="permission-setting[]">
|
||||
<!-- BEGIN permission_setting -->
|
||||
<option value="{permission_setting.GROUP_ID}"<!-- IF permission_setting.SELECTED -->selected="selected"<!-- ENDIF -->>{permission_setting.GROUP_NAME}</option>
|
||||
<!-- END permission_setting -->
|
||||
</select>
|
||||
</dd>
|
||||
</dl>
|
||||
<!-- ENDIF -->
|
||||
</fieldset>
|
||||
<!-- ENDIF -->
|
||||
<!-- BEGIN options -->
|
||||
<!-- IF options.S_LEGEND -->
|
||||
<!-- IF not options.S_FIRST_ROW -->
|
||||
</fieldset>
|
||||
<!-- ENDIF -->
|
||||
<fieldset>
|
||||
<legend>{options.LEGEND}</legend>
|
||||
<!-- ELSE -->
|
||||
|
||||
<dl>
|
||||
<dt><label for="{options.KEY}">{options.TITLE}:</label><!-- IF options.S_EXPLAIN --><br /><span>{options.TITLE_EXPLAIN}</span><!-- ENDIF --></dt>
|
||||
<dd>{options.CONTENT}</dd>
|
||||
</dl>
|
||||
|
||||
<!-- ENDIF -->
|
||||
<!-- BEGINELSE -->
|
||||
<fieldset>
|
||||
<!-- END options -->
|
||||
|
||||
<!-- IF S_AUTH -->
|
||||
<!-- BEGIN auth_tpl -->
|
||||
{auth_tpl.TPL}
|
||||
<!-- END auth_tpl -->
|
||||
<!-- ENDIF -->
|
||||
|
||||
<p class="submit-buttons">
|
||||
<input class="button1" type="submit" id="submit" name="submit" value="{L_SUBMIT}" />
|
||||
<input class="button2" type="reset" id="reset" name="reset" value="{L_RESET}" />
|
||||
</p>
|
||||
{S_FORM_TOKEN}
|
||||
</fieldset>
|
||||
</form>
|
||||
|
||||
<!-- INCLUDE overall_footer.html -->
|
||||
@@ -1,241 +0,0 @@
|
||||
<!-- INCLUDE overall_header.html -->
|
||||
|
||||
<script type="text/javascript" src="{ROOT_PATH}style/portal/acp_portal.js"></script>
|
||||
<script type="text/javascript">
|
||||
// <![CDATA[
|
||||
/**
|
||||
* bbCode control by subBlue design [ www.subBlue.com ]
|
||||
* Includes unixsafe colour palette selector by SHS`
|
||||
*/
|
||||
|
||||
// Startup variables
|
||||
var imageTag = false;
|
||||
var theSelection = false;
|
||||
|
||||
var bbcodeEnabled = true;
|
||||
// Check for Browser & Platform for PC & IE specific bits
|
||||
// More details from: http://www.mozilla.org/docs/web-developer/sniffer/browser_type.html
|
||||
var clientPC = navigator.userAgent.toLowerCase(); // Get client info
|
||||
var clientVer = parseInt(navigator.appVersion); // Get browser version
|
||||
|
||||
var is_ie = ((clientPC.indexOf('msie') != -1) && (clientPC.indexOf('opera') == -1));
|
||||
var is_win = ((clientPC.indexOf('win') != -1) || (clientPC.indexOf('16bit') != -1));
|
||||
var baseHeight;
|
||||
|
||||
var form_name = 'acp_portal_welcome';
|
||||
var text_name = 'custom_code';
|
||||
var load_draft = false;
|
||||
var upload = false;
|
||||
|
||||
// Define the bbCode tags
|
||||
var bbcode = new Array();
|
||||
var bbtags = new Array('[b]','[/b]','[i]','[/i]','[u]','[/u]','[quote]','[/quote]','[code]','[/code]','[list]','[/list]','[list=]','[/list]','[img]','[/img]','[url]','[/url]','[flash=]', '[/flash]','[size=]','[/size]'<!-- BEGIN custom_tags -->, {custom_tags.BBCODE_NAME}<!-- END custom_tags -->);
|
||||
var imageTag = false;
|
||||
|
||||
// Helpline messages
|
||||
var help_line = {
|
||||
b: '{LA_BBCODE_B_HELP}',
|
||||
i: '{LA_BBCODE_I_HELP}',
|
||||
u: '{LA_BBCODE_U_HELP}',
|
||||
q: '{LA_BBCODE_Q_HELP}',
|
||||
c: '{LA_BBCODE_C_HELP}',
|
||||
l: '{LA_BBCODE_L_HELP}',
|
||||
o: '{LA_BBCODE_O_HELP}',
|
||||
p: '{LA_BBCODE_P_HELP}',
|
||||
w: '{LA_BBCODE_W_HELP}',
|
||||
a: '{LA_BBCODE_A_HELP}',
|
||||
s: '{LA_BBCODE_S_HELP}',
|
||||
f: '{LA_BBCODE_F_HELP}',
|
||||
e: '{LA_BBCODE_E_HELP}',
|
||||
d: '{LA_BBCODE_D_HELP}'
|
||||
<!-- BEGIN custom_tags -->
|
||||
,cb_{custom_tags.BBCODE_ID}: '{custom_tags.A_BBCODE_HELPLINE}'
|
||||
<!-- END custom_tags -->
|
||||
}
|
||||
|
||||
// ]]>
|
||||
</script>
|
||||
|
||||
<a name="maincontent"></a>
|
||||
|
||||
<h1>{L_TITLE}</h1>
|
||||
|
||||
<p>{L_TITLE_EXPLAIN}</p>
|
||||
|
||||
<!-- IF S_ERROR -->
|
||||
<div class="errorbox">
|
||||
<h3>{L_WARNING}</h3>
|
||||
<p>{ERROR_MSG}</p>
|
||||
</div>
|
||||
<!-- ENDIF -->
|
||||
<form id="acp_portal_config" method="post" action="{U_ACTION}">
|
||||
<!-- IF SHOW_MODULE_OPTIONS -->
|
||||
<fieldset>
|
||||
<legend>{L_MODULE_OPTIONS}</legend>
|
||||
<dl>
|
||||
<dt><label for="module_name">{L_MODULE_NAME}:</label><br /><span>{L_MODULE_NAME_EXP}</span></dt>
|
||||
<dd><input id="module_name" type="text" value="{MODULE_NAME}" name="module_name" maxlength="255" size="64" /></dd>
|
||||
</dl>
|
||||
<!-- IF MODULE_SHOW_IMAGE -->
|
||||
<dl>
|
||||
<dt><label for="module_image">{L_MODULE_IMAGE}:</label><br /><span>{L_MODULE_IMAGE_EXP}</span></dt>
|
||||
<dd><input id="module_image" type="text" value="{MODULE_IMAGE}" name="module_image" maxlength="255" size="64" /></dd>
|
||||
<!-- IF MODULE_IMAGE_SRC --><dd><img src="{MODULE_IMAGE_SRC}" alt="{L_MODULE_IMAGE}" /></dd><!-- ENDIF -->
|
||||
</dl>
|
||||
<!-- IF MODULE_IMAGE_SRC -->
|
||||
<dl>
|
||||
<dt><label for="module_img_width">{L_MODULE_IMAGE_WIDTH}:</label><br /><span>{L_MODULE_IMAGE_WIDTH_EXP}</span></dt>
|
||||
<dd><input id="module_img_width" type="text" value="{MODULE_IMAGE_WIDTH}" name="module_img_width" maxlength="3" size="3" />px</dd>
|
||||
</dl>
|
||||
<dl>
|
||||
<dt><label for="module_img_height">{L_MODULE_IMAGE_HEIGHT}:</label><br /><span>{L_MODULE_IMAGE_HEIGHT_EXP}</span></dt>
|
||||
<dd><input id="module_img_height" type="text" value="{MODULE_IMAGE_HEIGHT}" name="module_img_height" maxlength="3" size="3" />px</dd>
|
||||
</dl>
|
||||
<!-- ENDIF -->
|
||||
<!-- ENDIF -->
|
||||
<dl>
|
||||
<dt><label for="module_reset">{L_MODULE_RESET}:</label><br /><span style="color: #BC2A4D;">{L_MODULE_RESET_EXP}</span></dt>
|
||||
<dd><input id="module_reset" type="checkbox" value="1" name="module_reset" /></dd>
|
||||
</dl>
|
||||
<dl>
|
||||
<dt><label for="module_status">{L_MODULE_STATUS}:</label></dt>
|
||||
<dd>
|
||||
<label><input type="radio" class="radio" name="module_status" value="1" id="module_status"<!-- IF MODULE_ENABLED --> checked="checked"<!-- ENDIF --> />{L_YES}</label>
|
||||
<label><input type="radio" class="radio" name="module_status" value="0"<!-- IF not MODULE_ENABLED --> checked="checked"<!-- ENDIF --> /> {L_NO}</label>
|
||||
</dd>
|
||||
</dl>
|
||||
<!-- IF permission_setting -->
|
||||
<dl>
|
||||
<dt><label for="permission-setting">{L_ACP_PORTAL_CUSTOM_PERMISSION}:</label><br /><span>{L_ACP_PORTAL_CUSTOM_PERMISSION_EXP}</span></dt>
|
||||
<dd>
|
||||
<select id="permission-setting" size="10" multiple="multiple" name="permission-setting[]">
|
||||
<!-- BEGIN permission_setting -->
|
||||
<option value="{permission_setting.GROUP_ID}"<!-- IF permission_setting.SELECTED -->selected="selected"<!-- ENDIF -->>{permission_setting.GROUP_NAME}</option>
|
||||
<!-- END permission_setting -->
|
||||
</select>
|
||||
</dd>
|
||||
</dl>
|
||||
<!-- ENDIF -->
|
||||
</fieldset>
|
||||
<!-- ENDIF -->
|
||||
<!-- IF S_PREVIEW -->
|
||||
<fieldset>
|
||||
<legend>{L_ACP_PORTAL_CUSTOM_PREVIEW}</legend>
|
||||
<dl>
|
||||
<dt style="border: none; width: 100%;">
|
||||
{PREVIEW_TEXT}
|
||||
</dt>
|
||||
</dl>
|
||||
</fieldset>
|
||||
<!-- ENDIF -->
|
||||
<fieldset>
|
||||
<legend>{L_PORTAL_CUSTOM}</legend>
|
||||
<dl id="bbcode-buttons"<!-- IF not CUSTOM_USE_BBCODE --> style="display: none;"<!-- ENDIF -->>
|
||||
<dd>
|
||||
<div id="colour_palette" style="display: none;">
|
||||
<dl style="clear: left;">
|
||||
<dt style="border: none;"><label>{L_FONT_COLOR}:</label><br /></dt>
|
||||
</dl>
|
||||
<dl style="clear: left;">
|
||||
<dt style="border: none;">
|
||||
<script type="text/javascript">
|
||||
// <![CDATA[
|
||||
function change_palette()
|
||||
{
|
||||
e = document.getElementById('colour_palette');
|
||||
if(e.style.display == 'block')
|
||||
{
|
||||
dE('colour_palette', -1);
|
||||
}
|
||||
else
|
||||
{
|
||||
dE('colour_palette', 1);
|
||||
}
|
||||
|
||||
if (e.style.display == 'block')
|
||||
{
|
||||
document.getElementById('bbpalette').value = '{LA_FONT_COLOR_HIDE}';
|
||||
}
|
||||
else
|
||||
{
|
||||
document.getElementById('bbpalette').value = '{LA_FONT_COLOR}';
|
||||
}
|
||||
}
|
||||
|
||||
colorPalette('h', 10, 5);
|
||||
// ]]>
|
||||
</script>
|
||||
</dt>
|
||||
</dl>
|
||||
</div>
|
||||
<div id="format-buttons">
|
||||
<input type="button" class="button2" accesskey="b" name="addbbcode0" value=" B " style="font-weight:bold; width: 30px" onclick="bbstyle(0)" title="{L_BBCODE_B_HELP}" />
|
||||
<input type="button" class="button2" accesskey="i" name="addbbcode2" value=" i " style="font-style:italic; width: 30px" onclick="bbstyle(2)" title="{L_BBCODE_I_HELP}" />
|
||||
<input type="button" class="button2" accesskey="u" name="addbbcode4" value=" u " style="text-decoration: underline; width: 30px" onclick="bbstyle(4)" title="{L_BBCODE_U_HELP}" />
|
||||
<!-- IF S_BBCODE_QUOTE -->
|
||||
<input type="button" class="button2" accesskey="q" name="addbbcode6" value="Quote" style="width: 50px" onclick="bbstyle(6)" title="{L_BBCODE_Q_HELP}" />
|
||||
<!-- ENDIF -->
|
||||
<input type="button" class="button2" accesskey="c" name="addbbcode8" value="Code" style="width: 40px" onclick="bbstyle(8)" title="{L_BBCODE_C_HELP}" />
|
||||
<input type="button" class="button2" accesskey="l" name="addbbcode10" value="List" style="width: 40px" onclick="bbstyle(10)" title="{L_BBCODE_L_HELP}" />
|
||||
<input type="button" class="button2" accesskey="o" name="addbbcode12" value="List=" style="width: 40px" onclick="bbstyle(12)" title="{L_BBCODE_O_HELP}" />
|
||||
<input type="button" class="button2" accesskey="t" name="addlitsitem" value="[*]" style="width: 40px" onclick="bbstyle(-1)" title="{L_BBCODE_LISTITEM_HELP}" />
|
||||
<!-- IF S_BBCODE_IMG -->
|
||||
<input type="button" class="button2" accesskey="p" name="addbbcode14" value="Img" style="width: 40px" onclick="bbstyle(14)" title="{L_BBCODE_P_HELP}" />
|
||||
<!-- ENDIF -->
|
||||
<!-- IF S_LINKS_ALLOWED -->
|
||||
<input type="button" class="button2" accesskey="w" name="addbbcode16" value="URL" style="text-decoration: underline; width: 40px" onclick="bbstyle(16)" title="{L_BBCODE_W_HELP}" />
|
||||
<!-- ENDIF -->
|
||||
<!-- IF S_BBCODE_FLASH -->
|
||||
<input type="button" class="button2" accesskey="d" name="addbbcode18" value="Flash" onclick="bbstyle(18)" title="{L_BBCODE_D_HELP}" />
|
||||
<!-- ENDIF -->
|
||||
<select name="addbbcode20" onchange="bbfontstyle('[size=' + this.form.addbbcode20.options[this.form.addbbcode20.selectedIndex].value + ']', '[/size]');this.form.addbbcode20.selectedIndex = 2;" title="{L_BBCODE_F_HELP}">
|
||||
<option value="50">{L_FONT_TINY}</option>
|
||||
<option value="85">{L_FONT_SMALL}</option>
|
||||
<option value="100" selected="selected">{L_FONT_NORMAL}</option>
|
||||
<!-- IF not MAX_FONT_SIZE or MAX_FONT_SIZE >= 150 -->
|
||||
<option value="150">{L_FONT_LARGE}</option>
|
||||
<!-- IF not MAX_FONT_SIZE or MAX_FONT_SIZE >= 200 -->
|
||||
<option value="200">{L_FONT_HUGE}</option>
|
||||
<!-- ENDIF -->
|
||||
<!-- ENDIF -->
|
||||
</select>
|
||||
<input type="button" class="button2" name="bbpalette" id="bbpalette" value="{L_FONT_COLOR}" onclick="change_palette();" title="{L_BBCODE_S_HELP}" />
|
||||
<!-- BEGIN custom_tags -->
|
||||
<input type="button" class="button2" name="addbbcode{custom_tags.BBCODE_ID}" value="{custom_tags.BBCODE_TAG}" onclick="bbstyle({custom_tags.BBCODE_ID})" title="{custom_tags.BBCODE_HELPLINE}" />
|
||||
<!-- END custom_tags -->
|
||||
</div>
|
||||
</dd>
|
||||
</dl>
|
||||
<dl>
|
||||
<dt>
|
||||
<label for="custom_code">{L_ACP_PORTAL_CUSTOM_CODE}:</label><br />
|
||||
<span>{L_ACP_PORTAL_CUSTOM_CODE_EXP}</span>
|
||||
</dt>
|
||||
<dd><textarea name="custom_code" id="custom_code" cols="6" rows="12">{CUSTOM_CODE}</textarea></dd>
|
||||
</dl>
|
||||
<dl>
|
||||
<dt>
|
||||
<label for="custom_use_bbcode">{L_ACP_PORTAL_CUSTOM_BBCODE}</label><br />
|
||||
<span>{L_ACP_PORTAL_CUSTOM_BBCODE_EXP}</span>
|
||||
</dt>
|
||||
<dd>
|
||||
<label><input onchange="dE('bbcode-buttons', 1)" class="radio" type="radio" value="1" name="custom_use_bbcode" id="custom_use_bbcode"<!-- IF CUSTOM_USE_BBCODE --> checked="checked"<!-- ENDIF --> />{L_YES}</label>
|
||||
<label><input onchange="dE('bbcode-buttons', -1)" class="radio" type="radio" value="0" name="custom_use_bbcode"<!-- IF not CUSTOM_USE_BBCODE --> checked="checked"<!-- ENDIF --> />{L_NO}</label>
|
||||
</dd>
|
||||
</dl>
|
||||
<!-- IF S_AUTH -->
|
||||
<!-- BEGIN auth_tpl -->
|
||||
{auth_tpl.TPL}
|
||||
<!-- END auth_tpl -->
|
||||
<!-- ENDIF -->
|
||||
|
||||
<p class="submit-buttons">
|
||||
<input class="button2" type="submit" id="preview" name="preview" value="{L_PREVIEW}" />
|
||||
<input class="button1" type="submit" id="submit" name="submit" value="{L_SUBMIT}" />
|
||||
<input class="button2" type="reset" id="reset" name="reset" value="{L_RESET}" />
|
||||
</p>
|
||||
{S_FORM_TOKEN}
|
||||
</fieldset>
|
||||
</form>
|
||||
|
||||
<!-- INCLUDE overall_footer.html -->
|
||||
@@ -1,178 +0,0 @@
|
||||
<!-- INCLUDE overall_header.html -->
|
||||
|
||||
<a name="maincontent"></a>
|
||||
|
||||
<h1>{L_TITLE}</h1>
|
||||
|
||||
<p>{L_TITLE_EXPLAIN}</p>
|
||||
|
||||
<!-- IF S_ERROR -->
|
||||
<div class="errorbox">
|
||||
<h3>{L_WARNING}</h3>
|
||||
<p>{ERROR_MSG}</p>
|
||||
</div>
|
||||
<!-- ENDIF -->
|
||||
|
||||
<!-- IF S_EDIT -->
|
||||
<form id="acp_portal_links" method="post" action="{U_ACTION}">
|
||||
|
||||
<fieldset>
|
||||
<legend>{L_ACP_PORTAL_LINKS}</legend>
|
||||
<dl>
|
||||
<dt><label for="link_title">{L_ACP_PORTAL_LINK_TITLE}:</label></dt>
|
||||
<dd><input name="link_title" type="text" id="link_title" value="{LINK_TITLE}" maxlength="255" /></dd>
|
||||
</dl>
|
||||
<dl>
|
||||
<dt>
|
||||
<label for="link_type">{L_ACP_PORTAL_LINK_TYPE}:</label><br />
|
||||
<span>{L_ACP_PORTAL_LINK_TYPE_EXP}</span>
|
||||
</dt>
|
||||
<dd>
|
||||
<label><input type="radio" class="radio" name="link_type" value="1" id="link_type"<!-- IF S_LINK_IS_INT --> checked="checked"<!-- ENDIF --> />{L_ACP_PORTAL_LINK_INT}</label>
|
||||
<label><input type="radio" class="radio" name="link_type" value="2"<!-- IF not S_LINK_IS_INT --> checked="checked"<!-- ENDIF --> /> {L_ACP_PORTAL_LINK_EXT}</label>
|
||||
</dd>
|
||||
</dl>
|
||||
<dl>
|
||||
<dt>
|
||||
<label for="link_url">{L_ACP_PORTAL_LINK_URL}:</label><br />
|
||||
<span>{L_ACP_PORTAL_LINK_URL_EXP}</span>
|
||||
</dt>
|
||||
<dd><input name="link_url" type="text" id="link_url" value="{LINK_URL}" maxlength="255" /></dd>
|
||||
</dl>
|
||||
<dl>
|
||||
<dt>
|
||||
<label for="permission-setting-link">{L_ACP_PORTAL_LINK_PERMISSION}:</label><br />
|
||||
<span>{L_ACP_PORTAL_LINK_PERMISSION_EXP}</span>
|
||||
</dt>
|
||||
<dd>
|
||||
<select id="permission-setting-link" size="10" multiple="multiple" name="permission-setting-link[]">
|
||||
<!-- BEGIN permission_setting_link -->
|
||||
<option value="{permission_setting_link.GROUP_ID}"<!-- IF permission_setting_link.SELECTED -->selected="selected"<!-- ENDIF -->>{permission_setting_link.GROUP_NAME}</option>
|
||||
<!-- END permission_setting_link -->
|
||||
</select>
|
||||
</dd>
|
||||
</dl>
|
||||
<p class="submit-buttons">
|
||||
<input type="hidden" name="action" value="save" />
|
||||
|
||||
<input class="button1" type="submit" id="submit" name="submit" value="{L_SUBMIT}" />
|
||||
<input class="button2" type="reset" id="reset" name="reset" value="{L_RESET}" />
|
||||
{S_FORM_TOKEN}
|
||||
</p>
|
||||
</fieldset>
|
||||
</form>
|
||||
|
||||
<!-- ELSE -->
|
||||
<form id="acp_portal_links" method="post" action="{U_ACTION}">
|
||||
<!-- IF SHOW_MODULE_OPTIONS -->
|
||||
<fieldset>
|
||||
<legend>{L_MODULE_OPTIONS}</legend>
|
||||
<dl>
|
||||
<dt><label for="module_name">{L_MODULE_NAME}:</label><br /><span>{L_MODULE_NAME_EXP}</span></dt>
|
||||
<dd><input id="module_name" type="text" value="{MODULE_NAME}" name="module_name" maxlength="255" size="64" /></dd>
|
||||
</dl>
|
||||
<!-- IF MODULE_SHOW_IMAGE -->
|
||||
<dl>
|
||||
<dt><label for="module_image">{L_MODULE_IMAGE}:</label><br /><span>{L_MODULE_IMAGE_EXP}</span></dt>
|
||||
<dd><input id="module_image" type="text" value="{MODULE_IMAGE}" name="module_image" maxlength="255" size="64" /></dd>
|
||||
<!-- IF MODULE_IMAGE_SRC --><dd><img src="{MODULE_IMAGE_SRC}" alt="{L_MODULE_IMAGE}" /></dd><!-- ENDIF -->
|
||||
</dl>
|
||||
<!-- IF MODULE_IMAGE_SRC -->
|
||||
<dl>
|
||||
<dt><label for="module_img_width">{L_MODULE_IMAGE_WIDTH}:</label><br /><span>{L_MODULE_IMAGE_WIDTH_EXP}</span></dt>
|
||||
<dd><input id="module_img_width" type="text" value="{MODULE_IMAGE_WIDTH}" name="module_img_width" maxlength="3" size="3" />px</dd>
|
||||
</dl>
|
||||
<dl>
|
||||
<dt><label for="module_img_height">{L_MODULE_IMAGE_HEIGHT}:</label><br /><span>{L_MODULE_IMAGE_HEIGHT_EXP}</span></dt>
|
||||
<dd><input id="module_img_height" type="text" value="{MODULE_IMAGE_HEIGHT}" name="module_img_height" maxlength="3" size="3" />px</dd>
|
||||
</dl>
|
||||
<!-- ENDIF -->
|
||||
<!-- ENDIF -->
|
||||
<dl>
|
||||
<dt><label for="module_reset">{L_MODULE_RESET}:</label><br /><span style="color: #BC2A4D;">{L_MODULE_RESET_EXP}</span></dt>
|
||||
<dd><input id="module_reset" type="checkbox" value="1" name="module_reset" /></dd>
|
||||
</dl>
|
||||
<dl>
|
||||
<dt><label for="module_status">{L_MODULE_STATUS}:</label></dt>
|
||||
<dd>
|
||||
<label><input type="radio" class="radio" name="module_status" value="1" id="module_status"<!-- IF MODULE_ENABLED --> checked="checked"<!-- ENDIF --> />{L_YES}</label>
|
||||
<label><input type="radio" class="radio" name="module_status" value="0"<!-- IF not MODULE_ENABLED --> checked="checked"<!-- ENDIF --> /> {L_NO}</label>
|
||||
</dd>
|
||||
</dl>
|
||||
<!-- IF permission_setting -->
|
||||
<dl>
|
||||
<dt><label for="permission-setting">{L_MODULE_PERMISSIONS}:</label><br /><span>{L_MODULE_PERMISSIONS_EXP}</span></dt>
|
||||
<dd>
|
||||
<select id="permission-setting" size="10" multiple="multiple" name="permission-setting[]">
|
||||
<!-- BEGIN permission_setting -->
|
||||
<option value="{permission_setting.GROUP_ID}"<!-- IF permission_setting.SELECTED -->selected="selected"<!-- ENDIF -->>{permission_setting.GROUP_NAME}</option>
|
||||
<!-- END permission_setting -->
|
||||
</select>
|
||||
</dd>
|
||||
</dl>
|
||||
<!-- ENDIF -->
|
||||
</fieldset>
|
||||
<!-- ENDIF -->
|
||||
<!-- BEGIN options -->
|
||||
<!-- IF options.S_LEGEND -->
|
||||
<!-- IF not options.S_FIRST_ROW -->
|
||||
</fieldset>
|
||||
<!-- ENDIF -->
|
||||
<fieldset>
|
||||
<legend>{options.LEGEND}</legend>
|
||||
<!-- ELSE -->
|
||||
|
||||
<dl>
|
||||
<dt><label for="{options.KEY}">{options.TITLE}:</label><!-- IF options.S_EXPLAIN --><br /><span>{options.TITLE_EXPLAIN}</span><!-- ENDIF --></dt>
|
||||
<dd>{options.CONTENT}</dd>
|
||||
</dl>
|
||||
|
||||
<!-- ENDIF -->
|
||||
<!-- BEGINELSE -->
|
||||
<fieldset>
|
||||
<!-- END options -->
|
||||
<fieldset class="tabulated">
|
||||
<legend>{L_ACP_PORTAL_LINKS}</legend>
|
||||
|
||||
<p class="quick">
|
||||
<input class="button2" name="add" type="submit" value="{L_ACP_PORTAL_LINK_ADD}" />
|
||||
</p>
|
||||
|
||||
<table cellspacing="1">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>{L_ACP_PORTAL_LINK_TITLE}</th>
|
||||
<th>{L_ACP_PORTAL_LINK_URL}</th>
|
||||
<th>{L_ACTION}</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<!-- BEGIN links -->
|
||||
<!-- IF links.S_ROW_COUNT is even --><tr class="row1"><!-- ELSE --><tr class="row2"><!-- ENDIF -->
|
||||
<td style="text-align: center;"<!-- IF links.S_LINK_IS_CAT --> class="row3" colspan="2"<!-- ENDIF -->>{links.LINK_TITLE}</td>
|
||||
<!-- IF not links.S_LINK_IS_CAT --><td style="text-align: center;">{links.LINK_URL}</td><!-- ENDIF -->
|
||||
<td style="text-align: center;">
|
||||
<!-- IF links.S_FIRST_ROW -->{ICON_MOVE_UP_DISABLED}<!-- ELSE --><a href="{links.U_MOVE_UP}">{ICON_MOVE_UP}</a><!-- ENDIF -->
|
||||
<!-- IF links.S_LAST_ROW -->{ICON_MOVE_DOWN_DISABLED}<!-- ELSE --><a href="{links.U_MOVE_DOWN}">{ICON_MOVE_DOWN}</a><!-- ENDIF -->
|
||||
<a href="{links.U_EDIT}">{ICON_EDIT}</a> <a href="{links.U_DELETE}">{ICON_DELETE}</a>
|
||||
</td>
|
||||
</tr>
|
||||
<!-- BEGINELSE -->
|
||||
<tr class="row1">
|
||||
<td style="text-align: center;" colspan="3">{L_LINKS_NO_LINKS}</td>
|
||||
</tr>
|
||||
<!-- END links -->
|
||||
</tbody>
|
||||
</table>
|
||||
<p class="submit-buttons">
|
||||
<input class="button1" type="submit" id="submit" name="submit" value="{L_SUBMIT}" />
|
||||
<input class="button2" type="reset" id="reset" name="reset" value="{L_RESET}" />
|
||||
</p>
|
||||
{S_FORM_TOKEN}
|
||||
</fieldset>
|
||||
</fieldset>
|
||||
</form>
|
||||
|
||||
<!-- ENDIF -->
|
||||
|
||||
<!-- INCLUDE overall_footer.html -->
|
||||
@@ -1,185 +0,0 @@
|
||||
<!-- INCLUDE overall_header.html -->
|
||||
|
||||
<a name="maincontent"></a>
|
||||
|
||||
<h1>{L_TITLE}</h1>
|
||||
|
||||
<p>{L_TITLE_EXPLAIN}</p>
|
||||
|
||||
<!-- IF S_ERROR -->
|
||||
<div class="errorbox">
|
||||
<h3>{L_WARNING}</h3>
|
||||
<p>{ERROR_MSG}</p>
|
||||
</div>
|
||||
<!-- ENDIF -->
|
||||
|
||||
<!-- IF S_EDIT -->
|
||||
<form id="acp_portal_links" method="post" action="{U_ACTION}">
|
||||
|
||||
<fieldset>
|
||||
<legend>{L_ACP_PORTAL_MENU_LINK_SETTINGS}</legend>
|
||||
<dl>
|
||||
<dt><label for="link_title">{L_ACP_PORTAL_MENU_TITLE}:</label></dt>
|
||||
<dd><input name="link_title" type="text" id="link_title" value="{LINK_TITLE}" maxlength="255" /></dd>
|
||||
</dl>
|
||||
<dl>
|
||||
<dt><label for="link_is_cat">{L_ACP_PORTAL_MENU_IS_CAT}:</label></dt>
|
||||
<dd><label><input onchange="dE('url', -1)" type="radio" class="radio" name="link_is_cat" value="1" id="link_is_cat"<!-- IF S_LINK_IS_CAT --> checked="checked"<!-- ENDIF --> />{L_YES}</label>
|
||||
<label><input onchange="dE('url', 1)" type="radio" class="radio" name="link_is_cat" value="0"<!-- IF not S_LINK_IS_CAT --> checked="checked"<!-- ENDIF --> /> {L_NO}</label></dd>
|
||||
</dl>
|
||||
<div id="url"<!-- IF S_LINK_IS_CAT --> style="display: none;"<!-- ENDIF -->>
|
||||
<dl>
|
||||
<dt>
|
||||
<label for="link_type">{L_ACP_PORTAL_MENU_TYPE}:</label><br />
|
||||
<span>{L_ACP_PORTAL_MENU_TYPE_EXP}</span>
|
||||
</dt>
|
||||
<dd>
|
||||
<label><input type="radio" class="radio" name="link_type" value="1" id="link_type"<!-- IF S_LINK_IS_INT --> checked="checked"<!-- ENDIF --> />{L_ACP_PORTAL_MENU_INT}</label>
|
||||
<label><input type="radio" class="radio" name="link_type" value="2"<!-- IF not S_LINK_IS_INT --> checked="checked"<!-- ENDIF --> /> {L_ACP_PORTAL_MENU_EXT}</label>
|
||||
</dd>
|
||||
</dl>
|
||||
<dl>
|
||||
<dt>
|
||||
<label for="link_url">{L_ACP_PORTAL_MENU_URL}:</label><br />
|
||||
<span>{L_ACP_PORTAL_MENU_URL_EXP}</span>
|
||||
</dt>
|
||||
<dd><input name="link_url" type="text" id="link_url" value="{LINK_URL}" maxlength="255" /></dd>
|
||||
</dl>
|
||||
<dl>
|
||||
<dt>
|
||||
<label for="permission-setting-menu">{L_ACP_PORTAL_MENU_PERMISSION}:</label><br />
|
||||
<span>{L_ACP_PORTAL_MENU_PERMISSION_EXP}</span>
|
||||
</dt>
|
||||
<dd>
|
||||
<select id="permission-setting-menu" size="10" multiple="multiple" name="permission-setting-menu[]">
|
||||
<!-- BEGIN permission_setting_menu -->
|
||||
<option value="{permission_setting_menu.GROUP_ID}"<!-- IF permission_setting_menu.SELECTED -->selected="selected"<!-- ENDIF -->>{permission_setting_menu.GROUP_NAME}</option>
|
||||
<!-- END permission_setting_menu -->
|
||||
</select>
|
||||
</dd>
|
||||
</dl>
|
||||
</div>
|
||||
<p class="submit-buttons">
|
||||
<input type="hidden" name="action" value="save" />
|
||||
|
||||
<input class="button1" type="submit" id="submit" name="submit" value="{L_SUBMIT}" />
|
||||
<input class="button2" type="reset" id="reset" name="reset" value="{L_RESET}" />
|
||||
{S_FORM_TOKEN}
|
||||
</p>
|
||||
</fieldset>
|
||||
</form>
|
||||
|
||||
<!-- ELSE -->
|
||||
<form id="acp_portal_links" method="post" action="{U_ACTION}">
|
||||
<!-- IF SHOW_MODULE_OPTIONS -->
|
||||
<fieldset>
|
||||
<legend>{L_MODULE_OPTIONS}</legend>
|
||||
<dl>
|
||||
<dt><label for="module_name">{L_MODULE_NAME}:</label><br /><span>{L_MODULE_NAME_EXP}</span></dt>
|
||||
<dd><input id="module_name" type="text" value="{MODULE_NAME}" name="module_name" maxlength="255" size="64" /></dd>
|
||||
</dl>
|
||||
<!-- IF MODULE_SHOW_IMAGE -->
|
||||
<dl>
|
||||
<dt><label for="module_image">{L_MODULE_IMAGE}:</label><br /><span>{L_MODULE_IMAGE_EXP}</span></dt>
|
||||
<dd><input id="module_image" type="text" value="{MODULE_IMAGE}" name="module_image" maxlength="255" size="64" /></dd>
|
||||
<!-- IF MODULE_IMAGE_SRC --><dd><img src="{MODULE_IMAGE_SRC}" alt="{L_MODULE_IMAGE}" /></dd><!-- ENDIF -->
|
||||
</dl>
|
||||
<!-- IF MODULE_IMAGE_SRC -->
|
||||
<dl>
|
||||
<dt><label for="module_img_width">{L_MODULE_IMAGE_WIDTH}:</label><br /><span>{L_MODULE_IMAGE_WIDTH_EXP}</span></dt>
|
||||
<dd><input id="module_img_width" type="text" value="{MODULE_IMAGE_WIDTH}" name="module_img_width" maxlength="3" size="3" />px</dd>
|
||||
</dl>
|
||||
<dl>
|
||||
<dt><label for="module_img_height">{L_MODULE_IMAGE_HEIGHT}:</label><br /><span>{L_MODULE_IMAGE_HEIGHT_EXP}</span></dt>
|
||||
<dd><input id="module_img_height" type="text" value="{MODULE_IMAGE_HEIGHT}" name="module_img_height" maxlength="3" size="3" />px</dd>
|
||||
</dl>
|
||||
<!-- ENDIF -->
|
||||
<!-- ENDIF -->
|
||||
<dl>
|
||||
<dt><label for="module_reset">{L_MODULE_RESET}:</label><br /><span style="color: #BC2A4D;">{L_MODULE_RESET_EXP}</span></dt>
|
||||
<dd><input id="module_reset" type="checkbox" value="1" name="module_reset" /></dd>
|
||||
</dl>
|
||||
<dl>
|
||||
<dt><label for="module_status">{L_MODULE_STATUS}:</label></dt>
|
||||
<dd>
|
||||
<label><input type="radio" class="radio" name="module_status" value="1" id="module_status"<!-- IF MODULE_ENABLED --> checked="checked"<!-- ENDIF --> />{L_YES}</label>
|
||||
<label><input type="radio" class="radio" name="module_status" value="0"<!-- IF not MODULE_ENABLED --> checked="checked"<!-- ENDIF --> /> {L_NO}</label>
|
||||
</dd>
|
||||
</dl>
|
||||
<!-- IF permission_setting -->
|
||||
<dl>
|
||||
<dt><label for="permission-setting">{L_MODULE_PERMISSIONS}:</label><br /><span>{L_MODULE_PERMISSIONS_EXP}</span></dt>
|
||||
<dd>
|
||||
<select id="permission-setting" size="10" multiple="multiple" name="permission-setting[]">
|
||||
<!-- BEGIN permission_setting -->
|
||||
<option value="{permission_setting.GROUP_ID}"<!-- IF permission_setting.SELECTED -->selected="selected"<!-- ENDIF -->>{permission_setting.GROUP_NAME}</option>
|
||||
<!-- END permission_setting -->
|
||||
</select>
|
||||
</dd>
|
||||
</dl>
|
||||
<!-- ENDIF -->
|
||||
</fieldset>
|
||||
<!-- ENDIF -->
|
||||
<!-- BEGIN options -->
|
||||
<!-- IF options.S_LEGEND -->
|
||||
<!-- IF not options.S_FIRST_ROW -->
|
||||
</fieldset>
|
||||
<!-- ENDIF -->
|
||||
<fieldset>
|
||||
<legend>{options.LEGEND}</legend>
|
||||
<!-- ELSE -->
|
||||
|
||||
<dl>
|
||||
<dt><label for="{options.KEY}">{options.TITLE}:</label><!-- IF options.S_EXPLAIN --><br /><span>{options.TITLE_EXPLAIN}</span><!-- ENDIF --></dt>
|
||||
<dd>{options.CONTENT}</dd>
|
||||
</dl>
|
||||
|
||||
<!-- ENDIF -->
|
||||
<!-- BEGINELSE -->
|
||||
<fieldset>
|
||||
<!-- END options -->
|
||||
<fieldset class="tabulated">
|
||||
<legend>{L_ACP_PORTAL_LINKS}</legend>
|
||||
|
||||
<p class="quick">
|
||||
<input class="button2" name="add" type="submit" value="{L_ACP_PORTAL_MENU_ADD}" />
|
||||
</p>
|
||||
|
||||
<table cellspacing="1">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>{L_ACP_PORTAL_MENU_TITLE}</th>
|
||||
<th>{L_ACP_PORTAL_MENU_URL}</th>
|
||||
<th>{L_ACTION}</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<!-- BEGIN links -->
|
||||
<!-- IF links.S_ROW_COUNT is even --><tr class="row1"><!-- ELSE --><tr class="row2"><!-- ENDIF -->
|
||||
<td style="text-align: center;"<!-- IF links.S_LINK_IS_CAT --> class="row3" colspan="2"<!-- ENDIF -->>{links.LINK_TITLE}</td>
|
||||
<!-- IF not links.S_LINK_IS_CAT --><td style="text-align: center;">{links.LINK_URL}</td><!-- ENDIF -->
|
||||
<td style="text-align: center;">
|
||||
<!-- IF links.S_FIRST_ROW -->{ICON_MOVE_UP_DISABLED}<!-- ELSE --><a href="{links.U_MOVE_UP}">{ICON_MOVE_UP}</a><!-- ENDIF -->
|
||||
<!-- IF links.S_LAST_ROW -->{ICON_MOVE_DOWN_DISABLED}<!-- ELSE --><a href="{links.U_MOVE_DOWN}">{ICON_MOVE_DOWN}</a><!-- ENDIF -->
|
||||
<a href="{links.U_EDIT}">{ICON_EDIT}</a> <a href="{links.U_DELETE}">{ICON_DELETE}</a>
|
||||
</td>
|
||||
</tr>
|
||||
<!-- BEGINELSE -->
|
||||
<tr class="row1">
|
||||
<td style="text-align: center;" colspan="3">{L_MENU_NO_LINKS}</td>
|
||||
</tr>
|
||||
<!-- END links -->
|
||||
</tbody>
|
||||
</table>
|
||||
<p class="submit-buttons">
|
||||
<input class="button1" type="submit" id="submit" name="submit" value="{L_SUBMIT}" />
|
||||
<input class="button2" type="reset" id="reset" name="reset" value="{L_RESET}" />
|
||||
</p>
|
||||
{S_FORM_TOKEN}
|
||||
</fieldset>
|
||||
</fieldset>
|
||||
</form>
|
||||
|
||||
<!-- ENDIF -->
|
||||
|
||||
<!-- INCLUDE overall_footer.html -->
|
||||
@@ -1,175 +0,0 @@
|
||||
<!-- INCLUDE overall_header.html -->
|
||||
|
||||
<a name="maincontent"></a>
|
||||
|
||||
<!-- IF S_EDIT -->
|
||||
<h1>{L_ACP_PORTAL_MODULES}</h1>
|
||||
<p>{L_ACP_PORTAL_MODULES_EXP}</p>
|
||||
|
||||
<form id="acp_portal_modules" method="post" action="{U_ACTION}">
|
||||
<fieldset>
|
||||
<legend>{L_GENERAL_OPTIONS}</legend>
|
||||
<dl>
|
||||
<dt><label for="module_classname">{L_CHOOSE_MODULE}:</label><br /><span>{L_CHOOSE_MODULE_EXP}</span></dt>
|
||||
<dd><select name="module_classname" id="module_classname">{S_MODULE_NAMES}</select></dd>
|
||||
</dl>
|
||||
|
||||
<p class="submit-buttons">
|
||||
<input class="button1" type="submit" id="submit" name="submit" value="{L_SUBMIT}" />
|
||||
<input class="button2" type="reset" id="reset" name="reset" value="{L_RESET}" />
|
||||
{S_FORM_TOKEN}{S_HIDDEN_FIELDS}
|
||||
</p>
|
||||
</fieldset>
|
||||
</form>
|
||||
|
||||
<!-- ELSE -->
|
||||
|
||||
<h1>{L_ACP_PORTAL_MODULES}</h1>
|
||||
<p>{L_ACP_PORTAL_MODULES_EXP}</p>
|
||||
|
||||
<form id="acp_portal_modules" method="post" action="{U_ACTION}">
|
||||
<fieldset class="tabulated">
|
||||
<legend>{L_ACP_PORTAL_MODULES}</legend>
|
||||
|
||||
<table cellspacing="1">
|
||||
<tr>
|
||||
<th style="text-align: center;" colspan="3">{L_MODULE_POS_TOP}</th>
|
||||
</tr>
|
||||
<!-- BEGIN modules_top -->
|
||||
<!-- IF not modules_top.MODULE_ENABLED --><tr class="row3"><!-- ELSEIF modules_top.S_ROW_COUNT is even --><tr class="row1"><!-- ELSE --><tr class="row2"><!-- ENDIF -->
|
||||
<td colspan="3">
|
||||
{modules_top.MODULE_IMAGE} {modules_top.MODULE_NAME}<br />
|
||||
<br />
|
||||
<!-- IF modules_top.S_FIRST_ROW -->{ICON_MOVE_UP_DISABLED}<!-- ELSE --><a href="{modules_top.U_MOVE_UP}">{ICON_MOVE_UP}</a><!-- ENDIF -->
|
||||
<!-- IF modules_top.S_LAST_ROW -->{ICON_MOVE_DOWN_DISABLED}<!-- ELSE --><a href="{modules_top.U_MOVE_DOWN}">{ICON_MOVE_DOWN}</a><!-- ENDIF -->
|
||||
<a href="{modules_top.U_EDIT}">{ICON_EDIT}</a> <a href="{modules_top.U_DELETE}">{ICON_DELETE}</a>
|
||||
</td>
|
||||
</tr>
|
||||
<!-- BEGINELSE -->
|
||||
<tr>
|
||||
<td class="row1" style="text-align: center;">{L_NO_MODULES}</td>
|
||||
</tr>
|
||||
<!-- END modules_top -->
|
||||
</table>
|
||||
<p class="quick">
|
||||
<input class="button2" name="add[top]" type="submit" value="{L_ADD_MODULE}" />
|
||||
</p>
|
||||
|
||||
<table style="background-color: transparent; border: none; padding: 0px; margin: 0px;">
|
||||
<tr style="vertical-align: top;">
|
||||
<td style="width: 20%; font-size: 100%; line-height: 100%; padding: 0px; margin: 0px;">
|
||||
<table cellspacing="1">
|
||||
<tr>
|
||||
<th>{L_MODULE_POS_LEFT}</th>
|
||||
</tr>
|
||||
<!-- BEGIN modules_left -->
|
||||
<!-- IF not modules_left.MODULE_ENABLED --><tr class="row3"><!-- ELSEIF modules_left.S_ROW_COUNT is even --><tr class="row1"><!-- ELSE --><tr class="row2"><!-- ENDIF -->
|
||||
<td>
|
||||
{modules_left.MODULE_IMAGE} {modules_left.MODULE_NAME}<br />
|
||||
<br />
|
||||
<!-- IF modules_left.S_FIRST_ROW -->{ICON_MOVE_UP_DISABLED}<!-- ELSE --><a href="{modules_left.U_MOVE_UP}">{ICON_MOVE_UP}</a><!-- ENDIF -->
|
||||
<!-- IF modules_left.U_MOVE_RIGHT --><a href="{modules_left.U_MOVE_RIGHT}"><!-- IF S_CONTENT_DIRECTION eq 'rtl' -->{ICON_MOVE_LEFT}<!-- ELSE -->{ICON_MOVE_RIGHT}<!-- ENDIF --></a><!-- ELSE --><!-- IF S_CONTENT_DIRECTION eq 'rtl' -->{ICON_MOVE_LEFT_DISABLED}<!-- ELSE -->{ICON_MOVE_RIGHT_DISABLED}<!-- ENDIF --><!-- ENDIF -->
|
||||
<a href="{modules_left.U_EDIT}">{ICON_EDIT}</a> <a href="{modules_left.U_DELETE}">{ICON_DELETE}</a><br />
|
||||
<!-- IF S_CONTENT_DIRECTION eq 'rtl' -->{ICON_MOVE_RIGHT_DISABLED}<!-- ELSE -->{ICON_MOVE_LEFT_DISABLED}<!-- ENDIF -->
|
||||
<!-- IF modules_left.S_LAST_ROW -->{ICON_MOVE_DOWN_DISABLED}<!-- ELSE --><a href="{modules_left.U_MOVE_DOWN}">{ICON_MOVE_DOWN}</a><!-- ENDIF -->
|
||||
</td>
|
||||
</tr>
|
||||
<!-- BEGINELSE -->
|
||||
<tr>
|
||||
<td class="row1" style="text-align: center;">{L_NO_MODULES}</td>
|
||||
</tr>
|
||||
<!-- END modules_left -->
|
||||
</table>
|
||||
<p class="quick">
|
||||
<input class="button2" name="add[left]" type="submit" value="{L_ADD_MODULE}" />
|
||||
</p>
|
||||
</td>
|
||||
<td style="font-size: 100%; line-height: 100%; padding: 0 12px;">
|
||||
<table cellspacing="1">
|
||||
<tr>
|
||||
<th style="text-align: center;">{L_MODULE_POS_CENTER}</th>
|
||||
</tr>
|
||||
<!-- BEGIN modules_center -->
|
||||
<!-- IF not modules_center.MODULE_ENABLED --><tr class="row3"><!-- ELSEIF modules_center.S_ROW_COUNT is even --><tr class="row1"><!-- ELSE --><tr class="row2"><!-- ENDIF -->
|
||||
<td>
|
||||
{modules_center.MODULE_IMAGE} {modules_center.MODULE_NAME}<br />
|
||||
<br />
|
||||
<!-- IF modules_center.S_FIRST_ROW -->{ICON_MOVE_UP_DISABLED}<!-- ELSE --><a href="{modules_center.U_MOVE_UP}">{ICON_MOVE_UP}</a><!-- ENDIF -->
|
||||
<!-- IF modules_center.U_MOVE_RIGHT --><a href="{modules_center.U_MOVE_RIGHT}">{ICON_MOVE_RIGHT}</a><!-- ELSE -->{ICON_MOVE_RIGHT_DISABLED}<!-- ENDIF -->
|
||||
<a href="{modules_center.U_EDIT}">{ICON_EDIT}</a> <a href="{modules_center.U_DELETE}">{ICON_DELETE}</a><br />
|
||||
<!-- IF modules_center.U_MOVE_LEFT --><a href="{modules_center.U_MOVE_LEFT}">{ICON_MOVE_LEFT}</a><!-- ELSE -->{ICON_MOVE_LEFT_DISABLED}<!-- ENDIF -->
|
||||
<!-- IF modules_center.S_LAST_ROW -->{ICON_MOVE_DOWN_DISABLED}<!-- ELSE --><a href="{modules_center.U_MOVE_DOWN}">{ICON_MOVE_DOWN}</a><!-- ENDIF -->
|
||||
</td>
|
||||
</tr>
|
||||
<!-- BEGINELSE -->
|
||||
<tr>
|
||||
<td class="row1" style="text-align: center;">{L_NO_MODULES}</td>
|
||||
</tr>
|
||||
<!-- END modules_center -->
|
||||
</table>
|
||||
<p class="quick">
|
||||
<input class="button2" name="add[center]" type="submit" value="{L_ADD_MODULE}" />
|
||||
</p>
|
||||
</td>
|
||||
<td style="width: 20%; font-size: 100%; line-height: 100%; padding: 0px;">
|
||||
<table cellspacing="1">
|
||||
<tr>
|
||||
<th>{L_MODULE_POS_RIGHT}</th>
|
||||
</tr>
|
||||
<!-- BEGIN modules_right -->
|
||||
<!-- IF not modules_right.MODULE_ENABLED --><tr class="row3"><!-- ELSEIF modules_right.S_ROW_COUNT is even --><tr class="row1"><!-- ELSE --><tr class="row2"><!-- ENDIF -->
|
||||
<td>
|
||||
{modules_right.MODULE_IMAGE} {modules_right.MODULE_NAME}<br />
|
||||
<br />
|
||||
<!-- IF modules_right.S_FIRST_ROW -->{ICON_MOVE_UP_DISABLED}<!-- ELSE --><a href="{modules_right.U_MOVE_UP}">{ICON_MOVE_UP}</a><!-- ENDIF -->
|
||||
<!-- IF S_CONTENT_DIRECTION eq 'rtl' -->{ICON_MOVE_LEFT_DISABLED}<!-- ELSE -->{ICON_MOVE_RIGHT_DISABLED}<!-- ENDIF -->
|
||||
<a href="{modules_right.U_EDIT}">{ICON_EDIT}</a> <a href="{modules_right.U_DELETE}">{ICON_DELETE}</a><br />
|
||||
<!-- IF modules_right.U_MOVE_LEFT --><a href="{modules_right.U_MOVE_LEFT}"><!-- IF S_CONTENT_DIRECTION eq 'rtl' -->{ICON_MOVE_RIGHT}<!-- ELSE -->{ICON_MOVE_LEFT}<!-- ENDIF --></a><!-- ELSE --><!-- IF S_CONTENT_DIRECTION eq 'rtl' -->{ICON_MOVE_RIGHT_DISABLED}<!-- ELSE -->{ICON_MOVE_LEFT_DISABLED}<!-- ENDIF --><!-- ENDIF -->
|
||||
<!-- IF modules_right.S_LAST_ROW -->{ICON_MOVE_DOWN_DISABLED}<!-- ELSE --><a href="{modules_right.U_MOVE_DOWN}">{ICON_MOVE_DOWN}</a><!-- ENDIF -->
|
||||
</td>
|
||||
</tr>
|
||||
<!-- BEGINELSE -->
|
||||
<tr>
|
||||
<td class="row1" style="text-align: center;">{L_NO_MODULES}</td>
|
||||
</tr>
|
||||
<!-- END modules_right -->
|
||||
</table>
|
||||
<p class="quick">
|
||||
<input class="button2" name="add[right]" type="submit" value="{L_ADD_MODULE}" />
|
||||
</p>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<br />
|
||||
|
||||
<table cellspacing="1">
|
||||
<tr>
|
||||
<th style="text-align: center;" colspan="3">{L_MODULE_POS_BOTTOM}</th>
|
||||
</tr>
|
||||
<!-- BEGIN modules_bottom -->
|
||||
<!-- IF not modules_bottom.MODULE_ENABLED --><tr class="row3"><!-- ELSEIF modules_bottom.S_ROW_COUNT is even --><tr class="row1"><!-- ELSE --><tr class="row2"><!-- ENDIF -->
|
||||
<td colspan="3">
|
||||
{modules_bottom.MODULE_IMAGE} {modules_bottom.MODULE_NAME}<br />
|
||||
<br />
|
||||
<!-- IF modules_bottom.S_FIRST_ROW -->{ICON_MOVE_UP_DISABLED}<!-- ELSE --><a href="{modules_bottom.U_MOVE_UP}">{ICON_MOVE_UP}</a><!-- ENDIF -->
|
||||
<!-- IF modules_bottom.S_LAST_ROW -->{ICON_MOVE_DOWN_DISABLED}<!-- ELSE --><a href="{modules_bottom.U_MOVE_DOWN}">{ICON_MOVE_DOWN}</a><!-- ENDIF -->
|
||||
<a href="{modules_bottom.U_EDIT}">{ICON_EDIT}</a> <a href="{modules_bottom.U_DELETE}">{ICON_DELETE}</a>
|
||||
</td>
|
||||
</tr>
|
||||
<!-- BEGINELSE -->
|
||||
<tr>
|
||||
<td class="row1" style="text-align: center;">{L_NO_MODULES}</td>
|
||||
</tr>
|
||||
<!-- END modules_bottom -->
|
||||
</table>
|
||||
<p class="quick">
|
||||
<input class="button2" name="add[bottom]" type="submit" value="{L_ADD_MODULE}" />
|
||||
</p>
|
||||
|
||||
{S_FORM_TOKEN}
|
||||
</fieldset>
|
||||
</form>
|
||||
|
||||
<!-- ENDIF -->
|
||||
|
||||
<!-- INCLUDE overall_footer.html -->
|
||||
@@ -1,63 +0,0 @@
|
||||
<!-- INCLUDE overall_header.html -->
|
||||
|
||||
<a name="maincontent"></a>
|
||||
|
||||
<h1>{L_TITLE}</h1>
|
||||
|
||||
<p>{L_TITLE_EXPLAIN}</p>
|
||||
|
||||
<!-- IF S_ERROR -->
|
||||
<div class="errorbox">
|
||||
<h3>{L_WARNING}</h3>
|
||||
<p>{ERROR_MSG}</p>
|
||||
</div>
|
||||
<!-- ENDIF -->
|
||||
|
||||
<!-- IF not S_MOD_SUCCESSBOX -->
|
||||
<form action="{U_ACTION}" method="post" id="mod_upload"{S_FORM_ENCTYPE}>
|
||||
<fieldset>
|
||||
<legend>{L_MODULE_UPLOAD}</legend>
|
||||
<dl>
|
||||
<dt>{L_MODULE_UPLOAD_EXP}</dt>
|
||||
<dd>
|
||||
<input type="file" name="modupload" id="modupload" value="" style="width:50%" />
|
||||
{S_FORM_TOKEN}
|
||||
<br /><br /><input type="submit" name="submit" value="{L_MODULE_UPLOAD_GO}" id="submit" class="button1" />
|
||||
</dd>
|
||||
</dl>
|
||||
</fieldset>
|
||||
</form>
|
||||
<!-- ELSE -->
|
||||
<div class="successbox">
|
||||
<p>{MESSAGE}</p>
|
||||
<br />
|
||||
<p><a href="{U_RETURN}">{L_BACK}</a></p>
|
||||
</div>
|
||||
<fieldset>
|
||||
<legend>{L_PORTAL_NEW_FILES}</legend>
|
||||
|
||||
<table cellspacing="1">
|
||||
<col class="row1" /><col class="row1" /><col class="row2" />
|
||||
<thead>
|
||||
<tr>
|
||||
<th>{L_PORTAL_MODULE_SOURCE}</th>
|
||||
<th>{L_PORTAL_MODULE_TARGET}</th>
|
||||
<th>{L_PORTAL_MODULE_STATUS}</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<!-- BEGIN new_files -->
|
||||
<tr>
|
||||
<td><strong>{new_files.SOURCE}<!-- IF new_files.S_MISSING_FILE --> <strong><font color="red">({L_FILE_MISSING})</font><!-- ENDIF --></strong></td>
|
||||
<td>{new_files.TARGET}</td>
|
||||
<!-- IF S_INSTALL -->
|
||||
<td style="<!-- IF new_files.S_SUCCESS -->color: green;">{L_PORTAL_MODULE_SUCCESS}<!-- ELSE -->color: red;">{L_PORTAL_MODULE_ERROR}<!-- ENDIF --></td>
|
||||
<!-- ENDIF -->
|
||||
</tr>
|
||||
<!-- END new_files -->
|
||||
</tbody>
|
||||
</table>
|
||||
</fieldset>
|
||||
<!-- ENDIF -->
|
||||
|
||||
<!-- INCLUDE overall_footer.html -->
|
||||
@@ -1,231 +0,0 @@
|
||||
<!-- INCLUDE overall_header.html -->
|
||||
|
||||
<script type="text/javascript" src="{ROOT_PATH}style/portal/acp_portal.js"></script>
|
||||
<script type="text/javascript">
|
||||
// <![CDATA[
|
||||
/**
|
||||
* bbCode control by subBlue design [ www.subBlue.com ]
|
||||
* Includes unixsafe colour palette selector by SHS`
|
||||
*/
|
||||
|
||||
// Startup variables
|
||||
var imageTag = false;
|
||||
var theSelection = false;
|
||||
|
||||
var bbcodeEnabled = true;
|
||||
// Check for Browser & Platform for PC & IE specific bits
|
||||
// More details from: http://www.mozilla.org/docs/web-developer/sniffer/browser_type.html
|
||||
var clientPC = navigator.userAgent.toLowerCase(); // Get client info
|
||||
var clientVer = parseInt(navigator.appVersion); // Get browser version
|
||||
|
||||
var is_ie = ((clientPC.indexOf('msie') != -1) && (clientPC.indexOf('opera') == -1));
|
||||
var is_win = ((clientPC.indexOf('win') != -1) || (clientPC.indexOf('16bit') != -1));
|
||||
var baseHeight;
|
||||
|
||||
var form_name = 'acp_portal_welcome';
|
||||
var text_name = 'welcome_message';
|
||||
var load_draft = false;
|
||||
var upload = false;
|
||||
|
||||
// Define the bbCode tags
|
||||
var bbcode = new Array();
|
||||
var bbtags = new Array('[b]','[/b]','[i]','[/i]','[u]','[/u]','[quote]','[/quote]','[code]','[/code]','[list]','[/list]','[list=]','[/list]','[img]','[/img]','[url]','[/url]','[flash=]', '[/flash]','[size=]','[/size]'<!-- BEGIN custom_tags -->, {custom_tags.BBCODE_NAME}<!-- END custom_tags -->);
|
||||
var imageTag = false;
|
||||
|
||||
// Helpline messages
|
||||
var help_line = {
|
||||
b: '{LA_BBCODE_B_HELP}',
|
||||
i: '{LA_BBCODE_I_HELP}',
|
||||
u: '{LA_BBCODE_U_HELP}',
|
||||
q: '{LA_BBCODE_Q_HELP}',
|
||||
c: '{LA_BBCODE_C_HELP}',
|
||||
l: '{LA_BBCODE_L_HELP}',
|
||||
o: '{LA_BBCODE_O_HELP}',
|
||||
p: '{LA_BBCODE_P_HELP}',
|
||||
w: '{LA_BBCODE_W_HELP}',
|
||||
a: '{LA_BBCODE_A_HELP}',
|
||||
s: '{LA_BBCODE_S_HELP}',
|
||||
f: '{LA_BBCODE_F_HELP}',
|
||||
e: '{LA_BBCODE_E_HELP}',
|
||||
d: '{LA_BBCODE_D_HELP}'
|
||||
<!-- BEGIN custom_tags -->
|
||||
,cb_{custom_tags.BBCODE_ID}: '{custom_tags.A_BBCODE_HELPLINE}'
|
||||
<!-- END custom_tags -->
|
||||
}
|
||||
|
||||
// ]]>
|
||||
</script>
|
||||
|
||||
<a name="maincontent"></a>
|
||||
|
||||
<h1>{L_TITLE}</h1>
|
||||
|
||||
<p>{L_TITLE_EXPLAIN}</p>
|
||||
|
||||
<!-- IF S_ERROR -->
|
||||
<div class="errorbox">
|
||||
<h3>{L_WARNING}</h3>
|
||||
<p>{ERROR_MSG}</p>
|
||||
</div>
|
||||
<!-- ENDIF -->
|
||||
<form id="acp_portal_config" method="post" action="{U_ACTION}">
|
||||
<!-- IF SHOW_MODULE_OPTIONS -->
|
||||
<fieldset>
|
||||
<legend>{L_MODULE_OPTIONS}</legend>
|
||||
<dl>
|
||||
<dt><label for="module_name">{L_MODULE_NAME}:</label><br /><span>{L_MODULE_NAME_EXP}</span></dt>
|
||||
<dd><input id="module_name" type="text" value="{MODULE_NAME}" name="module_name" maxlength="255" size="64" /></dd>
|
||||
</dl>
|
||||
<!-- IF MODULE_SHOW_IMAGE -->
|
||||
<dl>
|
||||
<dt><label for="module_image">{L_MODULE_IMAGE}:</label><br /><span>{L_MODULE_IMAGE_EXP}</span></dt>
|
||||
<dd><input id="module_image" type="text" value="{MODULE_IMAGE}" name="module_image" maxlength="255" size="64" /></dd>
|
||||
<!-- IF MODULE_IMAGE_SRC --><dd><img src="{MODULE_IMAGE_SRC}" alt="{L_MODULE_IMAGE}" /></dd><!-- ENDIF -->
|
||||
</dl>
|
||||
<!-- IF MODULE_IMAGE_SRC -->
|
||||
<dl>
|
||||
<dt><label for="module_img_width">{L_MODULE_IMAGE_WIDTH}:</label><br /><span>{L_MODULE_IMAGE_WIDTH_EXP}</span></dt>
|
||||
<dd><input id="module_img_width" type="text" value="{MODULE_IMAGE_WIDTH}" name="module_img_width" maxlength="3" size="3" />px</dd>
|
||||
</dl>
|
||||
<dl>
|
||||
<dt><label for="module_img_height">{L_MODULE_IMAGE_HEIGHT}:</label><br /><span>{L_MODULE_IMAGE_HEIGHT_EXP}</span></dt>
|
||||
<dd><input id="module_img_height" type="text" value="{MODULE_IMAGE_HEIGHT}" name="module_img_height" maxlength="3" size="3" />px</dd>
|
||||
</dl>
|
||||
<!-- ENDIF -->
|
||||
<!-- ENDIF -->
|
||||
<dl>
|
||||
<dt><label for="module_reset">{L_MODULE_RESET}:</label><br /><span style="color: #BC2A4D;">{L_MODULE_RESET_EXP}</span></dt>
|
||||
<dd><input id="module_reset" type="checkbox" value="1" name="module_reset" /></dd>
|
||||
</dl>
|
||||
<dl>
|
||||
<dt><label for="module_status">{L_MODULE_STATUS}:</label></dt>
|
||||
<dd>
|
||||
<label><input type="radio" class="radio" name="module_status" value="1" id="module_status"<!-- IF MODULE_ENABLED --> checked="checked"<!-- ENDIF --> />{L_YES}</label>
|
||||
<label><input type="radio" class="radio" name="module_status" value="0"<!-- IF not MODULE_ENABLED --> checked="checked"<!-- ENDIF --> /> {L_NO}</label>
|
||||
</dd>
|
||||
</dl>
|
||||
<!-- IF permission_setting -->
|
||||
<dl>
|
||||
<dt><label for="permission-setting">{L_MODULE_PERMISSIONS}:</label><br /><span>{L_MODULE_PERMISSIONS_EXP}</span></dt>
|
||||
<dd>
|
||||
<select id="permission-setting" size="10" multiple="multiple" name="permission-setting[]">
|
||||
<!-- BEGIN permission_setting -->
|
||||
<option value="{permission_setting.GROUP_ID}"<!-- IF permission_setting.SELECTED -->selected="selected"<!-- ENDIF -->>{permission_setting.GROUP_NAME}</option>
|
||||
<!-- END permission_setting -->
|
||||
</select>
|
||||
</dd>
|
||||
</dl>
|
||||
<!-- ENDIF -->
|
||||
</fieldset>
|
||||
<!-- ENDIF -->
|
||||
<!-- IF S_PREVIEW -->
|
||||
<fieldset>
|
||||
<legend>{L_ACP_PORTAL_WELCOME_PREVIEW}</legend>
|
||||
<dl>
|
||||
<dt style="border: none; width: 100%;">
|
||||
{PREVIEW_TEXT}
|
||||
</dt>
|
||||
</dl>
|
||||
</fieldset>
|
||||
<!-- ENDIF -->
|
||||
<fieldset>
|
||||
<legend>{L_PORTAL_WELCOME}</legend>
|
||||
<dl>
|
||||
<dd>
|
||||
<div id="colour_palette" style="display: none;">
|
||||
<dl style="clear: left;">
|
||||
<dt style="border: none;"><label>{L_FONT_COLOR}:</label><br /></dt>
|
||||
</dl>
|
||||
<dl style="clear: left;">
|
||||
<dt style="border: none;">
|
||||
<script type="text/javascript">
|
||||
// <![CDATA[
|
||||
function change_palette()
|
||||
{
|
||||
e = document.getElementById('colour_palette');
|
||||
if(e.style.display == 'block')
|
||||
{
|
||||
dE('colour_palette', -1);
|
||||
}
|
||||
else
|
||||
{
|
||||
dE('colour_palette', 1);
|
||||
}
|
||||
|
||||
if (e.style.display == 'block')
|
||||
{
|
||||
document.getElementById('bbpalette').value = '{LA_FONT_COLOR_HIDE}';
|
||||
}
|
||||
else
|
||||
{
|
||||
document.getElementById('bbpalette').value = '{LA_FONT_COLOR}';
|
||||
}
|
||||
}
|
||||
|
||||
colorPalette('h', 10, 5);
|
||||
// ]]>
|
||||
</script>
|
||||
</dt>
|
||||
</dl>
|
||||
</div>
|
||||
<div id="format-buttons">
|
||||
<input type="button" class="button2" accesskey="b" name="addbbcode0" value=" B " style="font-weight:bold; width: 30px" onclick="bbstyle(0)" title="{L_BBCODE_B_HELP}" />
|
||||
<input type="button" class="button2" accesskey="i" name="addbbcode2" value=" i " style="font-style:italic; width: 30px" onclick="bbstyle(2)" title="{L_BBCODE_I_HELP}" />
|
||||
<input type="button" class="button2" accesskey="u" name="addbbcode4" value=" u " style="text-decoration: underline; width: 30px" onclick="bbstyle(4)" title="{L_BBCODE_U_HELP}" />
|
||||
<!-- IF S_BBCODE_QUOTE -->
|
||||
<input type="button" class="button2" accesskey="q" name="addbbcode6" value="Quote" style="width: 50px" onclick="bbstyle(6)" title="{L_BBCODE_Q_HELP}" />
|
||||
<!-- ENDIF -->
|
||||
<input type="button" class="button2" accesskey="c" name="addbbcode8" value="Code" style="width: 40px" onclick="bbstyle(8)" title="{L_BBCODE_C_HELP}" />
|
||||
<input type="button" class="button2" accesskey="l" name="addbbcode10" value="List" style="width: 40px" onclick="bbstyle(10)" title="{L_BBCODE_L_HELP}" />
|
||||
<input type="button" class="button2" accesskey="o" name="addbbcode12" value="List=" style="width: 40px" onclick="bbstyle(12)" title="{L_BBCODE_O_HELP}" />
|
||||
<input type="button" class="button2" accesskey="t" name="addlitsitem" value="[*]" style="width: 40px" onclick="bbstyle(-1)" title="{L_BBCODE_LISTITEM_HELP}" />
|
||||
<!-- IF S_BBCODE_IMG -->
|
||||
<input type="button" class="button2" accesskey="p" name="addbbcode14" value="Img" style="width: 40px" onclick="bbstyle(14)" title="{L_BBCODE_P_HELP}" />
|
||||
<!-- ENDIF -->
|
||||
<!-- IF S_LINKS_ALLOWED -->
|
||||
<input type="button" class="button2" accesskey="w" name="addbbcode16" value="URL" style="text-decoration: underline; width: 40px" onclick="bbstyle(16)" title="{L_BBCODE_W_HELP}" />
|
||||
<!-- ENDIF -->
|
||||
<!-- IF S_BBCODE_FLASH -->
|
||||
<input type="button" class="button2" accesskey="d" name="addbbcode18" value="Flash" onclick="bbstyle(18)" title="{L_BBCODE_D_HELP}" />
|
||||
<!-- ENDIF -->
|
||||
<select name="addbbcode20" onchange="bbfontstyle('[size=' + this.form.addbbcode20.options[this.form.addbbcode20.selectedIndex].value + ']', '[/size]');this.form.addbbcode20.selectedIndex = 2;" title="{L_BBCODE_F_HELP}">
|
||||
<option value="50">{L_FONT_TINY}</option>
|
||||
<option value="85">{L_FONT_SMALL}</option>
|
||||
<option value="100" selected="selected">{L_FONT_NORMAL}</option>
|
||||
<!-- IF not MAX_FONT_SIZE or MAX_FONT_SIZE >= 150 -->
|
||||
<option value="150">{L_FONT_LARGE}</option>
|
||||
<!-- IF not MAX_FONT_SIZE or MAX_FONT_SIZE >= 200 -->
|
||||
<option value="200">{L_FONT_HUGE}</option>
|
||||
<!-- ENDIF -->
|
||||
<!-- ENDIF -->
|
||||
</select>
|
||||
<input type="button" class="button2" name="bbpalette" id="bbpalette" value="{L_FONT_COLOR}" onclick="change_palette();" title="{L_BBCODE_S_HELP}" />
|
||||
<!-- BEGIN custom_tags -->
|
||||
<input type="button" class="button2" name="addbbcode{custom_tags.BBCODE_ID}" value="{custom_tags.BBCODE_TAG}" onclick="bbstyle({custom_tags.BBCODE_ID})" title="{custom_tags.BBCODE_HELPLINE}" />
|
||||
<!-- END custom_tags -->
|
||||
</div>
|
||||
</dd>
|
||||
</dl>
|
||||
<dl>
|
||||
<dt>
|
||||
<label for="welcome_message">{L_ACP_PORTAL_WELCOME_MESSAGE}:</label><br />
|
||||
<span>{L_ACP_PORTAL_WELCOME_MESSAGE_EXP}</span>
|
||||
</dt>
|
||||
<dd><textarea name="welcome_message" id="welcome_message" cols="6" rows="12">{WELCOME_MESSAGE}</textarea></dd>
|
||||
</dl>
|
||||
<!-- IF S_AUTH -->
|
||||
<!-- BEGIN auth_tpl -->
|
||||
{auth_tpl.TPL}
|
||||
<!-- END auth_tpl -->
|
||||
<!-- ENDIF -->
|
||||
|
||||
<p class="submit-buttons">
|
||||
<input class="button2" type="submit" id="preview" name="preview" value="{L_PREVIEW}" />
|
||||
<input class="button1" type="submit" id="submit" name="submit" value="{L_SUBMIT}" />
|
||||
<input class="button2" type="reset" id="reset" name="reset" value="{L_RESET}" />
|
||||
</p>
|
||||
{S_FORM_TOKEN}
|
||||
</fieldset>
|
||||
</form>
|
||||
|
||||
<!-- INCLUDE overall_footer.html -->
|
||||
@@ -1,55 +0,0 @@
|
||||
{
|
||||
"name": "board3/portal",
|
||||
"type": "phpbb-extension",
|
||||
"description": "Adds a portal with several blocks to your forum. You can change the settings, move the blocks, add new blocks and more in the ACP.",
|
||||
"homepage": "http://www.board3.de",
|
||||
"version": "2.1.0-dev",
|
||||
"time": "2012-10-05 10:40:01",
|
||||
"licence": "GPL-2.0",
|
||||
"authors": [{
|
||||
"name": "Marc Alexander",
|
||||
"username": "marc1706",
|
||||
"email": "admin@m-a-styles.de",
|
||||
"homepage": "http://www.m-a-styles.de",
|
||||
"role": "Lead Developer"
|
||||
},
|
||||
{
|
||||
"name": "Joas Schilling",
|
||||
"username": "nickvergessen",
|
||||
"email": "nickvergessen@gmx.de",
|
||||
"homepage": "http://mods.flying-bits.org",
|
||||
"role": "Developer"
|
||||
},
|
||||
{
|
||||
"name": "Kevin",
|
||||
"username": "saint_hh",
|
||||
"homepage": "http://www.board3.de",
|
||||
"role": "Developer"
|
||||
},
|
||||
{
|
||||
"name": "Ice",
|
||||
"username": "avaren",
|
||||
"homepage": "http://www.board3.de",
|
||||
"role": "Developer"
|
||||
},
|
||||
{
|
||||
"name": "Christian",
|
||||
"username": "Christian_N",
|
||||
"homepage": "http://www.phpbb-projekt.de",
|
||||
"role": "Developer"
|
||||
},
|
||||
{
|
||||
"name": "Walter",
|
||||
"username": "Redbull254",
|
||||
"email": "w.bobeth@digitalfotografie-foren.de",
|
||||
"homepage": "http://www.digitalfotografie-foren.de",
|
||||
"role": "Developer"
|
||||
}],
|
||||
"require": {
|
||||
"php": ">=5.3.3",
|
||||
"phpbb/phpbb": "3.1.*@dev"
|
||||
},
|
||||
"extra": {
|
||||
"display-name": "Board3 Portal"
|
||||
}
|
||||
}
|
||||
@@ -1,8 +0,0 @@
|
||||
board3_controller:
|
||||
pattern: /portal
|
||||
defaults: { _controller: board3.portal.main:handle }
|
||||
|
||||
# This is currently not supported yet
|
||||
board3_pages_controller:
|
||||
pattern: /portal/{page}
|
||||
defaults: { _controller: board3.portal.main:handle_page, page: "portal" }
|
||||
@@ -1,12 +0,0 @@
|
||||
services:
|
||||
|
||||
board3.portal.main:
|
||||
class: \board3\portal\controller\main
|
||||
arguments:
|
||||
- @auth
|
||||
- @config
|
||||
- @template
|
||||
- @user
|
||||
- @path_helper
|
||||
- %core.root_path%
|
||||
- .%core.php_ext%
|
||||
@@ -1,275 +0,0 @@
|
||||
<?php
|
||||
/**
|
||||
*
|
||||
* @package Board3 Portal 2.1
|
||||
* @copyright (c) Board3 Group ( www.board3.de )
|
||||
* @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License v2
|
||||
*
|
||||
*/
|
||||
|
||||
namespace board3\portal\controller;
|
||||
|
||||
class main
|
||||
{
|
||||
/**
|
||||
* Auth object
|
||||
* @var phpbb_auth
|
||||
*/
|
||||
private $auth;
|
||||
|
||||
/**
|
||||
* phpBB Config object
|
||||
* @var phpbb_config_db
|
||||
*/
|
||||
private $config;
|
||||
|
||||
/**
|
||||
* Template object
|
||||
* @var phpbb_template
|
||||
*/
|
||||
private $template;
|
||||
|
||||
/**
|
||||
* User object
|
||||
* @var phpbb_user
|
||||
*/
|
||||
private $user;
|
||||
|
||||
/**
|
||||
* phpBB root path
|
||||
* @var string
|
||||
*/
|
||||
private $phpbb_root_path;
|
||||
|
||||
/**
|
||||
* PHP file extension
|
||||
* @var string
|
||||
*/
|
||||
private $php_ext;
|
||||
|
||||
/**
|
||||
* Portal root path
|
||||
* @var string
|
||||
*/
|
||||
private $root_path;
|
||||
|
||||
/**
|
||||
* Portal includes path
|
||||
* @var string
|
||||
*/
|
||||
private $includes_path;
|
||||
|
||||
/**
|
||||
* phpBB path helper
|
||||
* @var \phpbb\path_helper
|
||||
*/
|
||||
protected $path_helper;
|
||||
|
||||
/**
|
||||
* Constructor
|
||||
* NOTE: The parameters of this method must match in order and type with
|
||||
* the dependencies defined in the services.yml file for this service.
|
||||
* @param phpbb_auth $auth Auth object
|
||||
* @param phpbb_config_db $config phpBB Config object
|
||||
* @param phpbb_template $template Template object
|
||||
* @param phpbb_user $user User object
|
||||
* @param \phpbb\path_helper $path_helper phpBB path helper
|
||||
* @param string $phpbb_root_path phpBB root path
|
||||
* @param string $php_ext PHP file extension
|
||||
*/
|
||||
public function __construct($auth, $config, $template, $user, $path_helper, $phpbb_root_path, $php_ext)
|
||||
{
|
||||
global $portal_root_path;
|
||||
|
||||
$this->auth = $auth;
|
||||
$this->config = $config;
|
||||
$this->template = $template;
|
||||
$this->user = $user;
|
||||
$this->path_helper = $path_helper;
|
||||
$this->phpbb_root_path = $phpbb_root_path;
|
||||
$this->php_ext = $php_ext;
|
||||
$this->includes_path = $phpbb_root_path . 'ext/board3/portal/portal/';
|
||||
$this->root_path = $phpbb_root_path . 'ext/board3/portal/';
|
||||
$portal_root_path = $this->root_path;
|
||||
|
||||
if (!function_exists('obtain_portal_config'))
|
||||
{
|
||||
include($this->includes_path . 'includes/constants' . $this->php_ext);
|
||||
include($this->includes_path . 'includes/functions_modules' . $this->php_ext);
|
||||
include($this->includes_path . 'includes/functions' . $this->php_ext);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Extension front handler method. This is called automatically when your extension is accessed
|
||||
* through index.php?ext=example/foobar
|
||||
* @return null
|
||||
*/
|
||||
public function handle()
|
||||
{
|
||||
$this->check_permission();
|
||||
// We defined the phpBB objects in __construct() and can use them in the rest of our class like this
|
||||
//echo 'Welcome, ' . $this->user->data['username'];
|
||||
|
||||
// The following takes two arguments:
|
||||
// 1) which extension language folder we're using (it's not smart enough to use its own automatically)
|
||||
// 2) what language file to use
|
||||
$this->user->add_lang_ext('board3/portal', 'mods/portal');
|
||||
|
||||
/**
|
||||
* get initial data
|
||||
*/
|
||||
$portal_config = obtain_portal_config();
|
||||
$portal_modules = obtain_portal_modules();
|
||||
|
||||
/**
|
||||
* set up column_count array
|
||||
* with this we can hide unneeded parts of the portal
|
||||
*/
|
||||
$module_count = array(
|
||||
'total' => 0,
|
||||
'top' => 0,
|
||||
'left' => 0,
|
||||
'center' => 0,
|
||||
'right' => 0,
|
||||
'bottom' => 0,
|
||||
);
|
||||
|
||||
/**
|
||||
* start assigning block vars
|
||||
*/
|
||||
foreach ($portal_modules as $row)
|
||||
{
|
||||
if($row['module_status'] == B3_MODULE_DISABLED)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
$class_name = 'portal_' . $row['module_classname'] . '_module';
|
||||
if (!class_exists($class_name))
|
||||
{
|
||||
include("{$this->includes_path}modules/portal_{$row['module_classname']}{$this->php_ext}");
|
||||
}
|
||||
if (!class_exists($class_name))
|
||||
{
|
||||
trigger_error(sprintf($this->user->lang['CLASS_NOT_FOUND'], $class_name, 'portal_' . $row['module_classname']), E_USER_ERROR);
|
||||
}
|
||||
|
||||
$module = new $class_name();
|
||||
|
||||
/**
|
||||
* Check for permissions before loading anything
|
||||
* the default group of a user always defines his/her permission (KISS)
|
||||
*/
|
||||
$group_ary = (!empty($row['module_group_ids'])) ? explode(',', $row['module_group_ids']) : '';
|
||||
if ((is_array($group_ary) && !in_array($this->user->data['group_id'], $group_ary)))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
if ($module->language)
|
||||
{
|
||||
$this->user->add_lang_ext('board3/portal', 'mods/portal/' . $module->language);
|
||||
}
|
||||
if ($row['module_column'] == column_string_num('left') && $this->config['board3_left_column'])
|
||||
{
|
||||
$template_module = $module->get_template_side($row['module_id']);
|
||||
$template_column = 'left';
|
||||
++$module_count['left'];
|
||||
}
|
||||
if ($row['module_column'] == column_string_num('center'))
|
||||
{
|
||||
$template_module = $module->get_template_center($row['module_id']);
|
||||
$template_column = 'center';
|
||||
++$module_count['center'];
|
||||
}
|
||||
if ($row['module_column'] == column_string_num('right') && $this->config['board3_right_column'])
|
||||
{
|
||||
$template_module = $module->get_template_side($row['module_id']);
|
||||
$template_column = 'right';
|
||||
++$module_count['right'];
|
||||
}
|
||||
if ($row['module_column'] == column_string_num('top'))
|
||||
{
|
||||
$template_module = $module->get_template_center($row['module_id']);
|
||||
++$module_count['top'];
|
||||
}
|
||||
if ($row['module_column'] == column_string_num('bottom'))
|
||||
{
|
||||
$template_module = $module->get_template_center($row['module_id']);
|
||||
++$module_count['bottom'];
|
||||
}
|
||||
if (!isset($template_module))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
// Custom Blocks that have been defined in the ACP will return an array instead of just the name of the template file
|
||||
if (is_array($template_module))
|
||||
{
|
||||
$this->template->assign_block_vars('modules_' . column_num_string($row['module_column']), array(
|
||||
'TEMPLATE_FILE' => 'portal/modules/' . $template_module['template'],
|
||||
'IMAGE_SRC' => $this->path_helper->get_web_root_path() . $this->root_path . 'styles/' . $this->user->style['style_path'] . '/theme/images/portal/' . $template_module['image_src'],
|
||||
'TITLE' => $template_module['title'],
|
||||
'CODE' => $template_module['code'],
|
||||
'MODULE_ID' => $row['module_id'],
|
||||
'IMAGE_WIDTH' => $row['module_image_width'],
|
||||
'IMAGE_HEIGHT' => $row['module_image_height'],
|
||||
));
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->template->assign_block_vars('modules_' . column_num_string($row['module_column']), array(
|
||||
'TEMPLATE_FILE' => 'portal/modules/' . $template_module,
|
||||
'IMAGE_SRC' => $this->path_helper->get_web_root_path() . $this->root_path . 'styles/' . $this->user->style['style_path'] . '/theme/images/portal/' . $row['module_image_src'],
|
||||
'IMAGE_WIDTH' => $row['module_image_width'],
|
||||
'IMAGE_HEIGHT' => $row['module_image_height'],
|
||||
'MODULE_ID' => $row['module_id'],
|
||||
'TITLE' => (isset($this->user->lang[$row['module_name']])) ? $this->user->lang[$row['module_name']] : utf8_normalize_nfc($row['module_name']),
|
||||
));
|
||||
}
|
||||
unset($template_module);
|
||||
}
|
||||
$module_count['total'] = sizeof($portal_modules);
|
||||
|
||||
// Redirect to index if there are currently no active modules
|
||||
if($module_count['total'] < 1)
|
||||
{
|
||||
redirect(append_sid($this->phpbb_root_path . 'index' . $this->php_ext));
|
||||
}
|
||||
|
||||
// Assign specific vars
|
||||
$this->template->assign_vars(array(
|
||||
// 'S_SMALL_BLOCK' => true,
|
||||
'S_PORTAL_LEFT_COLUMN' => $this->config['board3_left_column_width'],
|
||||
'S_PORTAL_RIGHT_COLUMN' => $this->config['board3_right_column_width'],
|
||||
'S_LEFT_COLUMN' => ($module_count['left'] > 0 && $this->config['board3_left_column']) ? true : false,
|
||||
'S_CENTER_COLUMN' => ($module_count['center'] > 0) ? true : false,
|
||||
'S_RIGHT_COLUMN' => ($module_count['right'] > 0 && $this->config['board3_right_column']) ? true : false,
|
||||
'S_TOP_COLUMN' => ($module_count['top'] > 0) ? true : false,
|
||||
'S_BOTTOM_COLUMN' => ($module_count['bottom'] > 0) ? true : false,
|
||||
'S_DISPLAY_PHPBB_MENU' => $this->config['board3_phpbb_menu'],
|
||||
'B3P_DISPLAY_JUMPBOX' => $this->config['board3_display_jumpbox'],
|
||||
'T_EXT_THEME_PATH' => $this->path_helper->get_web_root_path() . $this->root_path . 'styles/' . $this->user->style['style_path'] . '/theme/',
|
||||
));
|
||||
|
||||
// And now to output the page.
|
||||
page_header($this->user->lang('PORTAL'));
|
||||
|
||||
// foobar_body.html is in ./ext/foobar/example/styles/prosilver/template/foobar_body.html
|
||||
$this->template->set_filenames(array(
|
||||
'body' => 'portal/portal_body.html'
|
||||
));
|
||||
|
||||
page_footer();
|
||||
}
|
||||
|
||||
// check if user should be able to access this page
|
||||
private function check_permission()
|
||||
{
|
||||
if (!isset($this->config['board3_enable']) || !$this->config['board3_enable'] || !$this->auth->acl_get('u_view_portal'))
|
||||
{
|
||||
redirect(append_sid($this->phpbb_root_path . 'index' . $this->php_ext));
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,297 +0,0 @@
|
||||
<?php
|
||||
/**
|
||||
*
|
||||
* @package Board3 Portal v2.1
|
||||
* @copyright (c) 2013 Board3 Group ( www.board3.de )
|
||||
* @license http://opensource.org/licenses/gpl-license.php GNU Public License
|
||||
*
|
||||
*/
|
||||
|
||||
die('This script shouldn\'t be run unless you really know what you do. If this script exists on a live board, please delete it.');
|
||||
|
||||
define('IN_PHPBB', true);
|
||||
define('B3_MODULE_ENABLED', 1);
|
||||
define('GROUPS_TABLE', '$this->table_prefix . \'groups');
|
||||
$php_ex = substr(strrchr(__FILE__, '.'), 1);
|
||||
$phpEx = $php_ex;
|
||||
|
||||
$config_entry = $portal_config_entry = $db_data = array();
|
||||
$root_path = '../'; // one directory down
|
||||
|
||||
function set_config($name, $val)
|
||||
{
|
||||
global $config_entry;
|
||||
|
||||
if (isset($config_entry[$name]))
|
||||
{
|
||||
trigger_error('Duplicate entry: ' . $name);
|
||||
}
|
||||
|
||||
handle_string($val);
|
||||
|
||||
$config_entry[$name] = $val;
|
||||
}
|
||||
|
||||
function handle_string(&$str)
|
||||
{
|
||||
if (is_string($str))
|
||||
{
|
||||
$str = "'$str'";
|
||||
}
|
||||
|
||||
if (empty($str))
|
||||
{
|
||||
$str = "''";
|
||||
}
|
||||
}
|
||||
|
||||
function set_portal_config($name, $val)
|
||||
{
|
||||
global $portal_config_entry;
|
||||
|
||||
if (isset($portal_config_entry[$name]))
|
||||
{
|
||||
trigger_error('Duplicate entry: ' . $name);
|
||||
}
|
||||
|
||||
handle_string($val);
|
||||
|
||||
// we do not want serialized entries as they are hard to read
|
||||
if (strpos($val, 'a:') === 1)
|
||||
{
|
||||
// cut preceding and appended quote
|
||||
$val = substr($val, 1, -1);
|
||||
// start unserializing and building
|
||||
$val = unserialize($val);
|
||||
$after_val = 'serialize(array(<br />';
|
||||
foreach ($val as $key => $entry)
|
||||
{
|
||||
if (is_array($entry))
|
||||
{
|
||||
$after_val .= ' array(<br />';
|
||||
foreach ($entry as $one => $two)
|
||||
{
|
||||
handle_string($one);
|
||||
handle_string($two);
|
||||
$after_val .= ' ' . $one . ' => ' . $two . ',<br />';
|
||||
}
|
||||
$after_val .= ' ),<br />';
|
||||
}
|
||||
else
|
||||
{
|
||||
handle_string($key);
|
||||
handle_string($entry);
|
||||
$after_val .= ' ' . $key . ' => ' . $entry . ',<br />';
|
||||
}
|
||||
}
|
||||
$after_val .= ' ))';
|
||||
$val = $after_val;
|
||||
}
|
||||
|
||||
$portal_config_entry[$name] = $val;
|
||||
}
|
||||
|
||||
$db = new db($db_data);
|
||||
board3_get_install_data($db, $root_path, $php_ex, $db_data);
|
||||
|
||||
echo 'set_config entries for migrations:<br /><pre>';
|
||||
foreach ($config_entry as $name => $val)
|
||||
{
|
||||
echo 'array(\'config.add\', array(\'' . $name . '\', ' . $val . ')),<br />';
|
||||
}
|
||||
echo '</pre>';
|
||||
|
||||
echo '<br /><br />set_portal_config entries for migrations:<br /><pre>';
|
||||
foreach ($portal_config_entry as $name => $val)
|
||||
{
|
||||
echo ' set_portal_config(\'' . $name . '\', ' . $val . ');<br />';
|
||||
}
|
||||
echo '</pre>';
|
||||
|
||||
echo '<br /><br />database entries:<br /><pre>';
|
||||
echo $db_data . '</pre><br />';
|
||||
|
||||
/**
|
||||
* This function will install the basic set of portal modules
|
||||
*
|
||||
* only set $purge_modules to false if you already know that the table is empty
|
||||
* set $u_action to where the user should be redirected after this
|
||||
* note that already existing data won't be deleted from the config and portal_config
|
||||
* just to make sure we don't overwrite anything, the IDs won't be reset
|
||||
* !! this function should usually only be executed once upon installing the portal !!
|
||||
* DO NOT set $purge_modules to false unless you want to auto-add all modules again after deleting them (i.e. if your database was corrupted)
|
||||
*/
|
||||
function board3_get_install_data($db, $root_path, $php_ex, &$db_data)
|
||||
{
|
||||
$directory = $root_path . 'portal/modules/';
|
||||
$db_data = ' $board3_sql_query = array(<br />';
|
||||
|
||||
/*
|
||||
* this is a list of the basic modules that will be installed
|
||||
* module_name => array(module_column, module_order)
|
||||
*/
|
||||
$modules_ary = array(
|
||||
// left column
|
||||
'portal_main_menu' => array(1, 1),
|
||||
'portal_stylechanger' => array(1, 2),
|
||||
'portal_birthday_list' => array(1, 3),
|
||||
'portal_clock' => array(1, 4),
|
||||
'portal_search' => array(1, 5),
|
||||
'portal_attachments' => array(1, 6),
|
||||
'portal_topposters' => array(1, 7),
|
||||
'portal_latest_members' => array(1, 8),
|
||||
'portal_link_us' => array(1, 9),
|
||||
|
||||
// center column
|
||||
'portal_welcome' => array(2, 1),
|
||||
'portal_recent' => array(2, 2),
|
||||
'portal_announcements' => array(2, 3),
|
||||
'portal_news' => array(2, 4),
|
||||
'portal_poll' => array(2, 5),
|
||||
'portal_whois_online' => array(2, 6),
|
||||
|
||||
// right column
|
||||
'portal_user_menu' => array(3, 1),
|
||||
'portal_statistics' => array(3, 2),
|
||||
'portal_calendar' => array(3, 3),
|
||||
'portal_leaders' => array(3, 4),
|
||||
'portal_latest_bots' => array(3, 5),
|
||||
'portal_links' => array(3, 6),
|
||||
);
|
||||
|
||||
foreach ($modules_ary as $module_name => $module_data)
|
||||
{
|
||||
$class_name = $module_name . '_module';
|
||||
if (!class_exists($class_name))
|
||||
{
|
||||
include($directory . $module_name . '.' . $php_ex);
|
||||
}
|
||||
if (!class_exists($class_name))
|
||||
{
|
||||
trigger_error('Class not found', E_USER_ERROR);
|
||||
}
|
||||
|
||||
$c_class = new $class_name();
|
||||
|
||||
$sql_ary = array(
|
||||
'module_classname' => substr($module_name, 7),
|
||||
'module_column' => $module_data[0],
|
||||
'module_order' => $module_data[1],
|
||||
'module_name' => $c_class->name,
|
||||
'module_image_src' => $c_class->image_src,
|
||||
'module_group_ids' => '',
|
||||
'module_image_width' => 16,
|
||||
'module_image_height' => 16,
|
||||
'module_status' => B3_MODULE_ENABLED,
|
||||
);
|
||||
$sql = 'INSERT INTO \' . $this->table_prefix . \'portal_modules ' . $db->sql_build_array('INSERT', $sql_ary);
|
||||
$db->sql_query($sql, true);
|
||||
|
||||
$data1 = array();
|
||||
$data2 = array();
|
||||
$db_data .= ' array(<br />';
|
||||
foreach ($sql_ary as $key => $val)
|
||||
{
|
||||
$key = (is_string($key)) ? '\'' . $key . '\'' : $key;
|
||||
$val = (is_string($val)) ? '\'' . $val . '\'' : $val;
|
||||
$db_data .= ' ' . $key . ' => ' . $val . ',<br />';
|
||||
}
|
||||
$db_data .= ' ),<br />';
|
||||
$c_class->install($db->sql_id());
|
||||
}
|
||||
$db_data .= ' );';
|
||||
}
|
||||
|
||||
class db
|
||||
{
|
||||
// start at 0
|
||||
private $sql_id = 0;
|
||||
|
||||
private $id = 0;
|
||||
|
||||
private $int_pointer = 0;
|
||||
|
||||
private $sql_ary = array();
|
||||
|
||||
private $sql_in_set = array();
|
||||
|
||||
private $data = array();
|
||||
|
||||
public function __construct(&$data)
|
||||
{
|
||||
$this->data = &$data;
|
||||
}
|
||||
public function sql_id()
|
||||
{
|
||||
return $this->sql_id;
|
||||
}
|
||||
|
||||
public function sql_query($sql, $increase = false)
|
||||
{
|
||||
if (strpos($sql, 'INSERT') !== false)
|
||||
{
|
||||
//$this->data[] = $sql;
|
||||
}
|
||||
if ($increase)
|
||||
{
|
||||
$this->sql_id++;
|
||||
}
|
||||
$this->id++;
|
||||
$this->sql_ary[$this->id] = $sql;
|
||||
return $this->id;
|
||||
}
|
||||
|
||||
public function sql_build_array($type, $ary)
|
||||
{
|
||||
$data1 = array();
|
||||
$data2 = array();
|
||||
foreach ($ary as $key => $val)
|
||||
{
|
||||
$data1[] = $key;
|
||||
$data2[] = (is_string($val)) ? '\'' . $val . '\'' : $val;
|
||||
}
|
||||
return '(' . implode(', ', $data1) . ') VALUES (' . implode(', ', $data2) . ');';
|
||||
}
|
||||
|
||||
public function sql_in_set($data1, $data2, $bool = -1)
|
||||
{
|
||||
$this->sql_in_set[$this->id + 1] = array($data1, $data2);
|
||||
return '\' . $db->sql_in_set('. $data1 . ', array(' . implode(',', $data2) . (($bool !== -1) ? '), ' . $bool : '') . '))';
|
||||
}
|
||||
|
||||
public function sql_fetchrow($id)
|
||||
{
|
||||
if (isset($this->sql_ary[$id]))
|
||||
{
|
||||
preg_match_all('/SELECT+[a-z0-9A-Z,_ ]+FROM/', $this->sql_ary[$id], $match);
|
||||
if (!empty($match))
|
||||
{
|
||||
// cut "SELECT " and " FROM"
|
||||
$match = substr($match[0][0], 7, strlen($match[0][0]) - 5 - 7);
|
||||
$match = str_replace(', ', ',', $match);
|
||||
$match = explode(',', $match);
|
||||
if (isset($this->sql_in_set[$id][1][$this->int_pointer]))
|
||||
{
|
||||
$ret = array();
|
||||
foreach ($match as $key)
|
||||
{
|
||||
if ($key == $this->sql_in_set[$id][0])
|
||||
{
|
||||
$ret[$key] = $this->sql_in_set[$id][1][$this->int_pointer];
|
||||
}
|
||||
else
|
||||
{
|
||||
$ret[$key] = "{foobar.{$key}.{$this->sql_in_set[$id][1][$this->int_pointer]}}";
|
||||
}
|
||||
}
|
||||
$this->int_pointer++;;
|
||||
return $ret;
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,11 +0,0 @@
|
||||
<?php
|
||||
|
||||
// this file is not really needed, when empty it can be ommitted
|
||||
// however you can override the default methods and add custom
|
||||
// installation logic
|
||||
|
||||
namespace board3\portal;
|
||||
|
||||
class ext extends \phpbb\extension\base
|
||||
{
|
||||
}
|
||||
@@ -1,491 +0,0 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* This file contains a class, to manage the bbcodes of a given phpbb
|
||||
* message_parser message.
|
||||
*
|
||||
* @author Joas Schilling <nickvergessen at gmx dot de>
|
||||
* @package trim_message
|
||||
* @copyright 2011
|
||||
* @license http://opensource.org/licenses/gpl-license.php GNU Public License
|
||||
* @version 1.1
|
||||
*/
|
||||
|
||||
/**
|
||||
* @ignore
|
||||
*/
|
||||
if (!defined('IN_PHPBB'))
|
||||
{
|
||||
exit;
|
||||
}
|
||||
|
||||
/**
|
||||
* phpbb_trim_message_bbcodes class
|
||||
*/
|
||||
class phpbb_trim_message_bbcodes
|
||||
{
|
||||
/**
|
||||
* Some BBCodes, such as img and flash should not be split up in their middle.
|
||||
* So I added a sensitive BBCode array which protects BBCodes from being split.
|
||||
* You can also need to add your custom bbcodes in here.
|
||||
*/
|
||||
private $sensitive_bbcodes = array('url', 'flash', 'flash=', 'attachment', 'attachment=', 'img', 'email', 'email=');
|
||||
private $is_sensitive = false;
|
||||
|
||||
/**
|
||||
* Variables
|
||||
*/
|
||||
private $message = '';
|
||||
private $bbcode_uid = '';
|
||||
private $bbcode_list = array();
|
||||
private $array_size = 0;
|
||||
private $max_content_length = 0;
|
||||
private $cur_content_length = 0;
|
||||
private $cur_position = 0;
|
||||
public $trim_position = 0;
|
||||
public $is_trimmed = false;
|
||||
|
||||
/**
|
||||
* Constructor
|
||||
*
|
||||
* @param string $message parsed message you want to trim
|
||||
* @param string $bbcode_uid bbcode_uid of the post
|
||||
*/
|
||||
public function __construct($message, $bbcode_uid, $content_length)
|
||||
{
|
||||
$this->message = $message;
|
||||
$this->bbcode_uid = $bbcode_uid;
|
||||
$this->max_content_length = $content_length;
|
||||
$this->array_size = 0;
|
||||
}
|
||||
|
||||
public function get_bbcodes()
|
||||
{
|
||||
$bbcode_end_length = utf8_strlen(':' . $this->bbcode_uid . ']');
|
||||
$quote_end_length = utf8_strlen('":' . $this->bbcode_uid . ']');
|
||||
|
||||
$possible_bbcodes = explode('[', $this->message);
|
||||
$content_length = $this->get_content_length($possible_bbcodes[0]);
|
||||
if ($content_length >= $this->max_content_length)
|
||||
{
|
||||
$allowed_content_position = $this->get_content_position($possible_bbcodes[0], $this->max_content_length);
|
||||
$this->trim_position = $this->cur_position + $allowed_content_position;
|
||||
// As we did not touch any bbcodes yet, we can just skip all that.
|
||||
if (!$this->max_content_length || ($content_length > $this->max_content_length))
|
||||
{
|
||||
$this->is_trimmed = true;
|
||||
}
|
||||
return;
|
||||
}
|
||||
$this->cur_position += utf8_strlen($possible_bbcodes[0]) + 1;
|
||||
$this->cur_content_length += $content_length;
|
||||
|
||||
// Skip the first one.
|
||||
array_shift($possible_bbcodes);
|
||||
$num_possible_bbcodes = sizeof($possible_bbcodes);
|
||||
$num_tested_bbcodes = 0;
|
||||
$start_of_last_part = 0;
|
||||
|
||||
$allow_close_quote = false;
|
||||
|
||||
foreach ($possible_bbcodes as $part)
|
||||
{
|
||||
$num_tested_bbcodes++;
|
||||
$exploded_parts = explode(':' . $this->bbcode_uid . ']', $part);
|
||||
$num_parts = sizeof($exploded_parts);
|
||||
|
||||
/**
|
||||
* One element means we do not match an end before the next opening:
|
||||
* String: [quote="[bbcode:uid]foobar[/bbcode:uid]":uid]
|
||||
* Keys: ^^^^^^^ = 0
|
||||
*/
|
||||
if ($num_parts == 1)
|
||||
{
|
||||
// 1 means, we are in [quote="":uid] and found another bbcode here.
|
||||
if (utf8_strpos($exploded_parts[0], 'quote="') === 0)
|
||||
{
|
||||
$open_end_quote = utf8_strpos($this->message, '":' . $this->bbcode_uid . ']', $this->cur_position);
|
||||
if ($open_end_quote !== false)
|
||||
{
|
||||
$close_quote = utf8_strpos($this->message, '[/quote:' . $this->bbcode_uid . ']', $open_end_quote);
|
||||
if ($close_quote !== false)
|
||||
{
|
||||
$open_end_quote += $quote_end_length;
|
||||
$this->open_bbcode('quote', $this->cur_position);
|
||||
$this->bbcode_action('quote', 'open_end', $open_end_quote);
|
||||
$this->cur_position += utf8_strlen($exploded_parts[0]);
|
||||
|
||||
// We allow the 3-keys special-case, when we have found a beginning before...
|
||||
$allow_close_quote = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
// Or the user just used a normal [ in his post.
|
||||
else
|
||||
{
|
||||
$this->cur_content_length++;
|
||||
$content_length = $this->get_content_length($exploded_parts[0]);
|
||||
$max_content_allowed = ($this->max_content_length - $this->cur_content_length);
|
||||
if (($content_length >= $max_content_allowed) && !$this->trim_position)
|
||||
{
|
||||
$allowed_content_position = $this->get_content_position($exploded_parts[0], $max_content_allowed);
|
||||
$this->trim_position = $this->cur_position + $allowed_content_position;
|
||||
}
|
||||
$this->cur_content_length += $content_length;
|
||||
$this->cur_position += utf8_strlen($exploded_parts[0]);
|
||||
}
|
||||
}
|
||||
/**
|
||||
* Two element is the normal case:
|
||||
* String: [bbcode:uid]foobar
|
||||
* Keys: ^^^^^^ = 0 ^^^^^^ = 1
|
||||
* String: [/bbcode:uid]foobar
|
||||
* Keys: ^^^^^^^ = 0 ^^^^^^ = 1
|
||||
*/
|
||||
elseif ($num_parts == 2)
|
||||
{
|
||||
/**
|
||||
* We found an opening bracket in the quoted username which is not a bbcode
|
||||
* String: [quote="odd[name":uid]quote-text
|
||||
* Keys: ^^^^^ = 0 ^^^^^^^^^^ = 1
|
||||
*/
|
||||
if ($allow_close_quote && (utf8_substr($exploded_parts[0], -6) == '"'))
|
||||
{
|
||||
$this->cur_position += utf8_strlen($exploded_parts[0]) + $bbcode_end_length;
|
||||
|
||||
$content_length = $this->get_content_length($exploded_parts[1]);
|
||||
$max_content_allowed = ($this->max_content_length - $this->cur_content_length);
|
||||
if (($content_length >= $max_content_allowed) && !$this->trim_position)
|
||||
{
|
||||
$allowed_content_position = $this->get_content_position($exploded_parts[1], $max_content_allowed);
|
||||
$this->trim_position = $this->cur_position + $allowed_content_position;
|
||||
}
|
||||
$this->cur_content_length += $content_length;
|
||||
$this->cur_position += utf8_strlen($exploded_parts[1]);
|
||||
$allow_close_quote = false;
|
||||
}
|
||||
// We matched something ;)
|
||||
else if ($exploded_parts[0][0] != '/')
|
||||
{
|
||||
// Open BBCode-tag
|
||||
$bbcode_tag = $this->filter_bbcode_tag($exploded_parts[0]);
|
||||
$bbcode_tag_extended = $this->filter_bbcode_tag($exploded_parts[0], false, false);
|
||||
if (in_array($bbcode_tag_extended, $this->sensitive_bbcodes))
|
||||
{
|
||||
$this->is_sensitive = true;
|
||||
}
|
||||
|
||||
|
||||
$this->open_bbcode($bbcode_tag, $this->cur_position);
|
||||
$this->cur_position += utf8_strlen($exploded_parts[0]) + $bbcode_end_length;
|
||||
$this->bbcode_action($bbcode_tag, 'open_end', $this->cur_position);
|
||||
|
||||
if (!$allow_close_quote && !$this->is_sensitive)
|
||||
{
|
||||
// If we allow a closing quote, we are in the username.
|
||||
// We do not count that as content-length.
|
||||
$content_length = $this->get_content_length($exploded_parts[1]);
|
||||
$max_content_allowed = ($this->max_content_length - $this->cur_content_length);
|
||||
if (($content_length >= $max_content_allowed) && !$this->trim_position)
|
||||
{
|
||||
$allowed_content_position = $this->get_content_position($exploded_parts[1], $max_content_allowed);
|
||||
$this->trim_position = $this->cur_position + $allowed_content_position;
|
||||
}
|
||||
$this->cur_content_length += $content_length;
|
||||
}
|
||||
$this->cur_position += utf8_strlen($exploded_parts[1]);
|
||||
}
|
||||
else
|
||||
{
|
||||
// Close BBCode-tag
|
||||
$bbcode_tag = $this->filter_bbcode_tag($exploded_parts[0]);
|
||||
$bbcode_tag_extended = $this->filter_bbcode_tag($exploded_parts[0], false);
|
||||
if ($bbcode_tag_extended == $bbcode_tag)
|
||||
{
|
||||
$bbcode_tag_extended = '';
|
||||
}
|
||||
$this->is_sensitive = false;
|
||||
|
||||
$this->bbcode_action($bbcode_tag, 'close_start', $this->cur_position);
|
||||
$this->cur_position += utf8_strlen($exploded_parts[0]) + $bbcode_end_length;
|
||||
$this->bbcode_action($bbcode_tag, 'close_end', $this->cur_position, $bbcode_tag_extended);
|
||||
|
||||
if (!$allow_close_quote)
|
||||
{
|
||||
// If we allow a closing quote, we are in the username.
|
||||
// We do not count that as content-length.
|
||||
$content_length = $this->get_content_length($exploded_parts[1]);
|
||||
$max_content_allowed = ($this->max_content_length - $this->cur_content_length);
|
||||
if (($content_length >= $max_content_allowed) && !$this->trim_position)
|
||||
{
|
||||
$allowed_content_position = $this->get_content_position($exploded_parts[1], $max_content_allowed);
|
||||
$this->trim_position = $this->cur_position + $allowed_content_position;
|
||||
}
|
||||
$this->cur_content_length += $content_length;
|
||||
}
|
||||
$this->cur_position += utf8_strlen($exploded_parts[1]);
|
||||
}
|
||||
}
|
||||
/**
|
||||
* Three elements means we are closing the opening-quote and the BBCode from inside:
|
||||
* String: [quote="[bbcode:uid]foo[/bbcode:uid]bar":uid]quotehere
|
||||
* Keys: ^^^^^^^ = 0 ^^^^ = 1 ^^^^^^^^^ = 2
|
||||
*/
|
||||
elseif ($num_parts == 3)
|
||||
{
|
||||
if (($exploded_parts[0][0] == '/') && (utf8_substr($exploded_parts[1], -6) == '"') && $allow_close_quote)
|
||||
{
|
||||
$bbcode_tag = $this->filter_bbcode_tag($exploded_parts[0]);
|
||||
|
||||
$this->bbcode_action($bbcode_tag, 'close_start', $this->cur_position);
|
||||
$this->cur_position += utf8_strlen($exploded_parts[0]) + $bbcode_end_length;
|
||||
$this->bbcode_action($bbcode_tag, 'close_end', $this->cur_position);
|
||||
$this->cur_position += utf8_strlen($exploded_parts[1]) + $bbcode_end_length;
|
||||
|
||||
$content_length = $this->get_content_length($exploded_parts[2]);
|
||||
$max_content_allowed = ($this->max_content_length - $this->cur_content_length);
|
||||
if (($content_length >= $max_content_allowed) && !$this->trim_position)
|
||||
{
|
||||
$allowed_content_position = $this->get_content_position($exploded_parts[2], $max_content_allowed);
|
||||
$this->trim_position = $this->cur_position + $allowed_content_position;
|
||||
}
|
||||
$this->cur_position += utf8_strlen($exploded_parts[2]);
|
||||
$this->cur_content_length += $content_length;
|
||||
|
||||
$allow_close_quote = false;
|
||||
}
|
||||
}
|
||||
|
||||
// Increase by one for the [ we explode on.
|
||||
$this->cur_position++;
|
||||
}
|
||||
|
||||
if ($this->cur_content_length > $this->max_content_length)
|
||||
{
|
||||
$this->is_trimmed = true;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Add a bbcode to the bbcode-list
|
||||
*
|
||||
* @param string $tag BBCode-tag, Exp: code
|
||||
* @param int $open_start start-position of the bbcode-open-tag
|
||||
* (Exp: >[<code]) in the message
|
||||
*/
|
||||
private function open_bbcode($tag, $open_start)
|
||||
{
|
||||
$this->bbcode_list[] = array(
|
||||
'bbcode_tag' => $tag,
|
||||
'open_start' => $open_start,
|
||||
'open_end' => 0,
|
||||
'close_start' => 0,
|
||||
'close_end' => 0,
|
||||
);
|
||||
$this->array_size++;
|
||||
}
|
||||
|
||||
/**
|
||||
* Add position to a listed bbcode
|
||||
*
|
||||
* @param string $tag BBCode-tag, Exp: code
|
||||
* @param string $part part can be one of the following:
|
||||
* i) open_end => [code>]<[/code]
|
||||
* ii) close_open => [code]>[</code]
|
||||
* iii) close_end => [code][/code>]<
|
||||
* @param int $position start-position of the bbcode-open-tag
|
||||
* @param int $tag_extended with the list-bbcode we get some
|
||||
* information about the bbcode at the end
|
||||
* of it. So we need to readd that.
|
||||
*/
|
||||
private function bbcode_action($tag, $part, $position, $tag_extended = false)
|
||||
{
|
||||
for ($i = 1; $i <= $this->array_size; $i++)
|
||||
{
|
||||
if ($this->bbcode_list[$this->array_size - $i]['bbcode_tag'] == $tag)
|
||||
{
|
||||
if (!$this->bbcode_list[$this->array_size - $i][$part])
|
||||
{
|
||||
$this->bbcode_list[$this->array_size - $i][$part] = $position;
|
||||
if ($tag_extended)
|
||||
{
|
||||
$this->bbcode_list[$this->array_size - $i]['bbcode_tag'] = $tag_extended;
|
||||
}
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Removes all BBcodes after a given position
|
||||
*/
|
||||
public function remove_bbcodes_after()
|
||||
{
|
||||
for ($i = 1; $i <= $this->array_size; $i++)
|
||||
{
|
||||
if ($this->bbcode_list[$this->array_size - $i]['open_start'] >= $this->trim_position)
|
||||
{
|
||||
unset($this->bbcode_list[$this->array_size - $i]);
|
||||
}
|
||||
}
|
||||
|
||||
$this->array_size = sizeof($this->bbcode_list);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns an array with BBCodes that need to be closed, after the position.
|
||||
*/
|
||||
public function get_open_bbcodes_after($position)
|
||||
{
|
||||
$bbcodes = array();
|
||||
for ($i = 1; $i <= $this->array_size; $i++)
|
||||
{
|
||||
if (($this->bbcode_list[$this->array_size - $i]['open_start'] < $position) &&
|
||||
($this->bbcode_list[$this->array_size - $i]['close_start'] >= $position))
|
||||
{
|
||||
$bbcodes[] = $this->bbcode_list[$this->array_size - $i]['bbcode_tag'];
|
||||
}
|
||||
}
|
||||
return $bbcodes;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the length of the content (substract code for smilie and url parsing)
|
||||
*
|
||||
* @param string $content Message to get the content length from
|
||||
* Exp: <markup>text<markup2>
|
||||
* Content: ^^^^
|
||||
*
|
||||
* @return int length of content without special markup
|
||||
*/
|
||||
static public function get_content_length($content)
|
||||
{
|
||||
$content_length = utf8_strlen($content);
|
||||
$last_smiley = false;
|
||||
$last_html_opening = $last_html_closing = 0;
|
||||
while (($last_html_opening = utf8_strpos($content, '<', $last_html_closing)) !== false)
|
||||
{
|
||||
$last_html_closing = utf8_strpos($content, '>', $last_html_opening);
|
||||
/**
|
||||
* Abort while loop if there are no more ">" or we'll end up in an
|
||||
* endless loop. The abort needs to be done here or the following
|
||||
* code will produce incorrect data.
|
||||
*/
|
||||
if (!$last_html_closing)
|
||||
{
|
||||
break;
|
||||
}
|
||||
|
||||
if (($smiley_code = utf8_substr($content, $last_html_opening + 7, ($last_html_closing - $last_html_opening - 11))) != '--')
|
||||
{
|
||||
if ($last_smiley == $smiley_code)
|
||||
{
|
||||
$content_length += utf8_strlen($smiley_code);
|
||||
$last_smiley = false;
|
||||
}
|
||||
else
|
||||
{
|
||||
$last_smiley = $smiley_code;
|
||||
}
|
||||
}
|
||||
$content_length -= ($last_html_closing - $last_html_opening) + 1;
|
||||
}
|
||||
return $content_length;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the position in the text, where we need to cut the message.
|
||||
*
|
||||
* Exp: sample<markup>text<markup2> AL = 8
|
||||
* Content: ^^^^^^^^^^^^^^^^ Text-Position = 16
|
||||
*
|
||||
* @param string $content Message to get the position in
|
||||
* @param int $allowed_length Content length we are allowed to add.
|
||||
*
|
||||
* @return int position in the markup-text where we cut the text
|
||||
*/
|
||||
static public function get_content_position($content, $allowed_length)
|
||||
{
|
||||
if (utf8_strpos(utf8_substr($content, 0, $allowed_length), '<') === false)
|
||||
{
|
||||
/**
|
||||
* If we did not find any HTML in our section, we can cut it.
|
||||
* Exp: sample<markup>text<markup2> AL = 3
|
||||
* Content: ^^^ Text-Position = 3
|
||||
*/
|
||||
return $allowed_length;
|
||||
}
|
||||
|
||||
$content_length = $allowed_length;
|
||||
$start_position = 0;
|
||||
$last_smiley = false;
|
||||
while (($last_html_opening = utf8_strpos(utf8_substr($content, 0, $content_length), '<', $start_position)) !== false)
|
||||
{
|
||||
// foreach markup we find in the string, we enlarge our text-size.
|
||||
$last_html_closing = utf8_strpos($content, '>', $last_html_opening);
|
||||
/**
|
||||
* Abort while loop if there are no more ">" or the following code
|
||||
* will produce incorrect data and additionally produce a PHP Notice.
|
||||
*/
|
||||
if (!$last_html_closing)
|
||||
{
|
||||
break;
|
||||
}
|
||||
|
||||
$content_length += ($last_html_closing - $last_html_opening) + 1;
|
||||
|
||||
$smiley_code = utf8_substr($content, $last_html_opening + 7, ($last_html_closing - $last_html_opening - 11));
|
||||
if (($smiley_code != '--') && (utf8_strpos($smiley_code, 'c="{SMILIES_PATH}/') === false))
|
||||
{
|
||||
if ($last_smiley == $smiley_code)
|
||||
{
|
||||
$content_length -= utf8_strlen($smiley_code);
|
||||
$last_smiley = false;
|
||||
}
|
||||
else
|
||||
{
|
||||
$last_smiley = $smiley_code;
|
||||
}
|
||||
}
|
||||
|
||||
$start_position = $last_html_opening + 1;
|
||||
}
|
||||
|
||||
return $content_length;
|
||||
}
|
||||
|
||||
/**
|
||||
* Filter BBCode-Tags:
|
||||
*
|
||||
* Exp: [/*:m] <= automatically added end of [*]
|
||||
* Exp: [/list:x] <= end of [list] tag with list-style-element
|
||||
* Exp: [bbcode=param1;param2] <= start of bbcode-tag with parameters
|
||||
*
|
||||
* @return string plain bbcode-tag
|
||||
*/
|
||||
static public function filter_bbcode_tag($bbcode_tag, $strip_information = true, $strip_equal = true)
|
||||
{
|
||||
if ($bbcode_tag[0] == '/')
|
||||
{
|
||||
$bbcode_tag = utf8_substr($bbcode_tag, 1);
|
||||
}
|
||||
|
||||
if ($strip_information && ($bbcode_tag == '*:m'))
|
||||
{
|
||||
return '*';
|
||||
}
|
||||
|
||||
if ($strip_information && (utf8_substr($bbcode_tag, 0, 5) == 'list:'))
|
||||
{
|
||||
return 'list';
|
||||
}
|
||||
|
||||
if (($strip_information || !$strip_equal) && (($equals = utf8_strpos($bbcode_tag, '=')) !== false))
|
||||
{
|
||||
$bbcode_tag = utf8_substr($bbcode_tag, 0, (!$strip_equal) ? $equals + 1 : $equals);
|
||||
}
|
||||
|
||||
return $bbcode_tag;
|
||||
}
|
||||
}
|
||||
@@ -1,190 +0,0 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* This file contains a class, that is able to trim a message from the phpbb
|
||||
* message_parser to a maximum length without breaking the bbcodes/smilies and
|
||||
* links.
|
||||
*
|
||||
* @author Joas Schilling <nickvergessen at gmx dot de>
|
||||
* @package trim_message
|
||||
* @copyright 2011
|
||||
* @license http://opensource.org/licenses/gpl-license.php GNU Public License
|
||||
* @version 1.0
|
||||
*/
|
||||
|
||||
/**
|
||||
* @ignore
|
||||
*/
|
||||
if (!defined('IN_PHPBB'))
|
||||
{
|
||||
exit;
|
||||
}
|
||||
|
||||
/**
|
||||
* phpbb_trim_message class
|
||||
*/
|
||||
class phpbb_trim_message
|
||||
{
|
||||
/**
|
||||
* Variables
|
||||
*/
|
||||
private $message = '';
|
||||
private $trimmed_message = '';
|
||||
private $bbcode_uid = '';
|
||||
private $append_str = '';
|
||||
private $length = 0;
|
||||
private $length_tolerance = 0;
|
||||
private $is_trimmed = null;
|
||||
private $bbcodes = null;
|
||||
|
||||
/**
|
||||
* Constructor
|
||||
*
|
||||
* @param string $message parsed message you want to trim
|
||||
* @param string $bbcode_uid bbcode_uid of the post
|
||||
* @param int $length length the code should be trimmed to
|
||||
* @param string $append_str text that is appended after trimmed message
|
||||
* @param int $tolerance tolerance for the message: we don't trim it
|
||||
* if it is shorter than length + tolerance.
|
||||
*/
|
||||
public function __construct($message, $bbcode_uid, $length, $append_str = ' [...]', $tolerance = 25)
|
||||
{
|
||||
$this->message = $message;
|
||||
$this->bbcode_uid = $bbcode_uid;
|
||||
$this->append_str = $append_str;
|
||||
$this->length = (int) $length;
|
||||
$this->length_tolerance = (int) $tolerance;
|
||||
}
|
||||
|
||||
/**
|
||||
* Did we trim the message, or was it short enough?
|
||||
*/
|
||||
public function is_trimmed()
|
||||
{
|
||||
return (bool) $this->is_trimmed;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the message, trimmed or in full length
|
||||
*/
|
||||
public function message($force_full_length = false)
|
||||
{
|
||||
if (is_null($this->is_trimmed) && !$force_full_length)
|
||||
{
|
||||
$this->is_trimmed = $this->trim();
|
||||
}
|
||||
|
||||
return ($this->is_trimmed && !$force_full_length) ? $this->trimmed_message : $this->message;
|
||||
}
|
||||
|
||||
/**
|
||||
* Filter some easy cases where we can return the result easily
|
||||
*
|
||||
* @return bool Returns whether the message was trimmed or not.
|
||||
*/
|
||||
private function trim()
|
||||
{
|
||||
if (utf8_strlen($this->message) <= ($this->length + $this->length_tolerance))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
if (!$this->bbcode_uid)
|
||||
{
|
||||
$this->trimmed_message = utf8_substr($this->message, 0, $this->length) . $this->append_str;
|
||||
return true;
|
||||
}
|
||||
|
||||
$this->trim_action();
|
||||
return $this->bbcodes->is_trimmed;
|
||||
}
|
||||
|
||||
/**
|
||||
* Do some magic... uhhh
|
||||
*/
|
||||
private function trim_action()
|
||||
{
|
||||
/**
|
||||
* Prepare the difficult action
|
||||
*/
|
||||
$this->trimmed_message = $this->message;
|
||||
$this->bbcodes = new phpbb_trim_message_bbcodes($this->trimmed_message, $this->bbcode_uid, $this->length);
|
||||
|
||||
/**
|
||||
* Step 1: Get a list of all BBCodes
|
||||
*/
|
||||
$this->bbcodes->get_bbcodes();
|
||||
|
||||
/**
|
||||
* Step 2: Remove all bbcodes from the list, that are opened after
|
||||
* the trim-position
|
||||
*/
|
||||
$this->bbcodes->remove_bbcodes_after();
|
||||
|
||||
/**
|
||||
* Step 3: Trim message
|
||||
*/
|
||||
$this->trimmed_message = utf8_substr($this->message, 0, $this->bbcodes->trim_position);
|
||||
|
||||
/**
|
||||
* Step 4: i) Remove links/emails/smilies that are cut, somewhere
|
||||
* in the middle
|
||||
* ii) Renew trim-position if we did something
|
||||
* iii) Append the message that is provided
|
||||
*/
|
||||
$this->remove_broken_links();
|
||||
$text_length = utf8_strlen($this->trimmed_message);
|
||||
if ($this->bbcodes->is_trimmed)
|
||||
{
|
||||
$this->trimmed_message .= $this->append_str;
|
||||
}
|
||||
|
||||
/**
|
||||
* Step 5: Close open BBCodes
|
||||
*/
|
||||
$open_bbcodes = $this->bbcodes->get_open_bbcodes_after($text_length);
|
||||
$this->close_bbcodes($open_bbcodes);
|
||||
}
|
||||
|
||||
/**
|
||||
* Removes broken smilies, emails and links without the URL-tag.
|
||||
*/
|
||||
private function remove_broken_links()
|
||||
{
|
||||
$open_brakets = substr_count($this->trimmed_message, '<');
|
||||
$closing_brakets = substr_count($this->trimmed_message, '>');
|
||||
if ($open_brakets != $closing_brakets)
|
||||
{
|
||||
/**
|
||||
* There was an open braket for an unparsed link
|
||||
* Example: <{cut}!-- l -->
|
||||
*/
|
||||
$this->trimmed_message = utf8_substr($this->trimmed_message, 0, utf8_strrpos($this->trimmed_message, '<'));
|
||||
}
|
||||
|
||||
$open_link = substr_count($this->trimmed_message, '<!-- ');
|
||||
if (($open_link % 2) == 1)
|
||||
{
|
||||
/**
|
||||
* We did not close all links we opened, so we cut off the message
|
||||
* before the last open tag ;)
|
||||
* Example: <!-- l -->{cut}<!-- l -->
|
||||
*/
|
||||
$this->trimmed_message = utf8_substr($this->trimmed_message, 0, utf8_strrpos($this->trimmed_message, '<!-- '));
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Close all open bbcodes
|
||||
*
|
||||
* @param array $open_bbcodes Array of all open bbcodes
|
||||
*/
|
||||
private function close_bbcodes($open_bbcodes)
|
||||
{
|
||||
foreach ($open_bbcodes as $bbcode_tag)
|
||||
{
|
||||
$this->trimmed_message .= '[/' . $bbcode_tag . ':' . $this->bbcode_uid . ']';
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,153 +0,0 @@
|
||||
<?php
|
||||
/**
|
||||
*
|
||||
* @package Board3 Portal v2
|
||||
* @copyright (c) Board3 Group ( www.board3.de )
|
||||
* @license http://opensource.org/licenses/gpl-license.php GNU Public License
|
||||
*
|
||||
*/
|
||||
|
||||
/**
|
||||
* DO NOT CHANGE
|
||||
*/
|
||||
if (!defined('IN_PHPBB'))
|
||||
{
|
||||
exit;
|
||||
}
|
||||
|
||||
if (empty($lang) || !is_array($lang))
|
||||
{
|
||||
$lang = array();
|
||||
}
|
||||
|
||||
// DEVELOPERS PLEASE NOTE
|
||||
//
|
||||
// All language files should use UTF-8 as their encoding and the files must not contain a BOM.
|
||||
//
|
||||
// Placeholders can now contain order information, e.g. instead of
|
||||
// 'Page %s of %s' you can (and should) write 'Page %1$s of %2$s', this allows
|
||||
// translators to re-order the output of data while ensuring it remains correct
|
||||
//
|
||||
// You do not need this where single placeholders are used, e.g. 'Message %d' is fine
|
||||
// equally where a string contains only two placeholders which are used to wrap text
|
||||
// in a url you again do not need to specify an order e.g., 'Click %sHERE%s' is fine
|
||||
|
||||
|
||||
$lang = array_merge($lang, array(
|
||||
// Portal Module
|
||||
'ACP_PORTAL_MODULES' => 'Portal Module',
|
||||
'ACP_PORTAL_MODULES_EXP' => 'Du kannst deine Portal Module hier verwalten. Falls du alle Module deaktivierst, dann deaktiviere bitte auch das Portal.',
|
||||
|
||||
'MODULE_POS_TOP' => 'Oben',
|
||||
'MODULE_POS_LEFT' => 'Linke Spalte',
|
||||
'MODULE_POS_RIGHT' => 'Rechte Spalte',
|
||||
'MODULE_POS_CENTER' => 'Mittlere Spalte',
|
||||
'MODULE_POS_BOTTOM' => 'Unten',
|
||||
'ADD_MODULE' => 'Modul Hinzufügen',
|
||||
'CHOOSE_MODULE' => 'Modul Auswählen',
|
||||
'CHOOSE_MODULE_EXP' => 'Wähle ein Modul von der Dropdown-Liste',
|
||||
'SUCCESS_ADD' => 'Das Modul wurde erfolgreich hinzugefügt.',
|
||||
'SUCCESS_DELETE' => 'Das Modul wurde erfolgreich entfernt.',
|
||||
'NO_MODULES' => 'Es wurden keine Module gefunden.',
|
||||
'MOVE_RIGHT' => 'Nach rechts',
|
||||
'MOVE_LEFT' => 'Nach links',
|
||||
'B3P_FILE_NOT_FOUND' => 'Die angegebene Datei konnte nicht gefunden werden',
|
||||
'UNABLE_TO_MOVE' => 'Es ist nicht möglich den Block in die gewählte Spalte zu verschieben.',
|
||||
'UNABLE_TO_MOVE_ROW' => 'Es ist nicht möglich den Block in die gewählte Reihe zu verschieben.',
|
||||
'DELETE_MODULE_CONFIRM' => 'Bist du sicher, dass du das Modul "%1$s" löschen möchtest?',
|
||||
'MODULE_RESET_SUCCESS' => 'Modul Einstellungen erfolgreich zurückgesetzt.',
|
||||
'MODULE_RESET_CONFIRM' => 'Bist du sicher, dass du die Einstellungen des Moduls "%1$s" zurücksetzen willst?',
|
||||
'MODULE_NOT_EXISTS' => 'Das gewählte Modul existiert nicht.',
|
||||
|
||||
'MODULE_OPTIONS' => 'Modul Optionen',
|
||||
'MODULE_NAME' => 'Modul Name',
|
||||
'MODULE_NAME_EXP' => 'Gebe den Namen ein der für das Modul in der Modul Konfiguration angezeigt werden soll.',
|
||||
'MODULE_IMAGE' => 'Modul Bild',
|
||||
'MODULE_IMAGE_EXP' => 'Gebe den Dateinamen des Modul Bildes ein. Das Bild muss sich in allen styles/{Dein Style}/theme/images/portal/ Ordnern befinden.',
|
||||
'MODULE_PERMISSIONS' => 'Modul Berechtigungen',
|
||||
'MODULE_PERMISSIONS_EXP' => 'Wähle die Gruppen aus, die berechtigt sein sollen, das Modul zu sehen. Sollen alle Benutzer das Modul sehen können, wähle nichts aus.<br />An- / abwählen mehrerer Gruppen indem man <samp>Strg</samp> gedrückt hält und klickt.',
|
||||
'MODULE_IMAGE_WIDTH' => 'Modul Bild Breite',
|
||||
'MODULE_IMAGE_WIDTH_EXP' => 'Gebe die breite des Modul Bildes in Pixeln ein',
|
||||
'MODULE_IMAGE_HEIGHT' => 'Modul Bild Höhe',
|
||||
'MODULE_IMAGE_HEIGHT_EXP' => 'Gebe die Höhe des Modul Bildes in Pixeln ein',
|
||||
'MODULE_RESET' => 'Modul Einstellungen zurücksetzen',
|
||||
'MODULE_RESET_EXP' => 'Dies wird alle Einstellungen des Moduls auf die Standardeinstellungen zurücksetzen!',
|
||||
'MODULE_STATUS' => 'Aktiviere Modul',
|
||||
'MODULE_ADD_ONCE' => 'Diese Modul kann nur ein Mal hinzugefügt werden.',
|
||||
'MODULE_IMAGE_ERROR' => 'Während dem Prüfen des Modul Bildes sind ein oder mehrere Fehler aufgetreten:',
|
||||
|
||||
// general
|
||||
'ACP_PORTAL' => 'Portal',
|
||||
'ACP_PORTAL_GENERAL_INFO' => 'Allgemeine Einstellungen',
|
||||
'ACP_PORTAL_CONFIG_INFO' => 'Allgemeine Einstellungen',
|
||||
'ACP_PORTAL_GENERAL_TITLE' => 'Portal Verwaltung',
|
||||
'ACP_PORTAL_GENERAL_TITLE_EXP' => 'Danke, dass du dich für board3 Portal entschieden hast. Auf dieser Seite kannst du dein Portal verwalten. Diese Anzeige gibt dir einen schnellen Überblick über die verschiedenen Portal-Einstellungen.',
|
||||
'PORTAL_ENABLE' => 'Portal aktivieren',
|
||||
'PORTAL_ENABLE_EXP' => 'Wenn deaktiviert, wird das komplette Portal abgeschaltet.',
|
||||
'PORTAL_LEFT_COLUMN' => 'Linke Spalte aktivieren',
|
||||
'PORTAL_LEFT_COLUMN_EXP' => 'Die Linke Spalte auf dem Portal anzeigen',
|
||||
'PORTAL_RIGHT_COLUMN' => 'Rechte Spalte aktivieren',
|
||||
'PORTAL_RIGHT_COLUMN_EXP' => 'Die Rechte Spalte auf dem Portal anzeigen',
|
||||
'PORTAL_VERSION_CHECK' => 'Versioncheck auf Portal',
|
||||
'ACP_PORTAL_COLUMN_WIDTH_SETTINGS' => 'Breiteneinstellung der rechten und linken Spalte',
|
||||
'PORTAL_LEFT_COLUMN_WIDTH' => 'Breite der linken Spalte',
|
||||
'PORTAL_LEFT_COLUMN_WIDTH_EXP' => 'Ändere hier die Breite der linken Spalte in Pixel, empfohlener Wert 180',
|
||||
'PORTAL_RIGHT_COLUMN_WIDTH' => 'Breite der rechten Spalte',
|
||||
'PORTAL_RIGHT_COLUMN_WIDTH_EXP' => 'Ändere hier die Breite der rechten Spalte in Pixel, empfohlener Wert 180',
|
||||
'PORTAL_PHPBB_MENU' => 'phpBB-Menü',
|
||||
'PORTAL_PHPBB_MENU_EXP' => 'Den phpBB Header auf dem Portal anzeigen.',
|
||||
'PORTAL_DISPLAY_JUMPBOX' => 'Zeige Jumpbox',
|
||||
'PORTAL_DISPLAY_JUMPBOX_EXP' => 'Die Jumpbox auf dem Portal anzeigen. Die Jumpbox wird nur angezeigt, wenn sie gleichzeitig in den Board-Funktionalitäten aktiviert ist.',
|
||||
|
||||
'LINK_ADDED' => 'Der Link wurde erfolgreich eingetragen',
|
||||
'LINK_UPDATED' => 'Der Link wurde erfolgreich geändert',
|
||||
'LOG_PORTAL_LINK_ADDED' => '<strong>Portal-Einstellungen geändert</strong><br />» Link hinzu gefügt: %s ',
|
||||
'LOG_PORTAL_LINK_UPDATED' => '<strong>Portal-Einstellungen geändert</strong><br />» Link geändert: %s ',
|
||||
'LOG_PORTAL_LINK_REMOVED' => '<strong>Portal-Einstellungen geändert</strong><br />» Link gelöscht: %s ',
|
||||
'LOG_PORTAL_EVENT_ADDED' => '<strong>Portal-Einstellungen geändert</strong><br />» Termin eingetragen: %s ',
|
||||
'LOG_PORTAL_EVENT_UPDATED' => '<strong>Portal-Einstellungen geändert</strong><br />» Termin geändert: %s ',
|
||||
'LOG_PORTAL_EVENT_REMOVED' => '<strong>Portal-Einstellungen geändert</strong><br />» Termin gelöscht: %s ',
|
||||
|
||||
// Upload Module
|
||||
'ACP_PORTAL_UPLOAD' => 'Modul hochladen',
|
||||
'MODULE_UPLOAD' => 'Lade ein Modul hoch',
|
||||
'MODULE_UPLOAD_EXP' => 'Wähle die ZIP-Datei des Moduls das du hochladen willst:',
|
||||
'MODULE_UPLOAD_GO' => 'Hochladen',
|
||||
'NO_MODULE_UPLOAD' => 'Deine Server-Konfiguration erlaubt das Hochladen von Dateien nicht.',
|
||||
'NO_FILE_B3P' => 'Es wurde keine Zip-Datei ausgewählt.',
|
||||
'MODULE_UPLOADED' => 'Modul erfolgreich hochgeladen.',
|
||||
'MODULE_UPLOAD_MKDIR_FAILURE' => 'Es konnte kein Ordner erstellt werden.',
|
||||
'MODULE_COPY_FAILURE' => 'Die folgende Datei konnte nicht kopiert werden: %1$s',
|
||||
'MODULE_CORRUPTED' => 'Das Modul das du hochladen willst, scheint defekt zu sein.',
|
||||
'PORTAL_NEW_FILES' => 'Neue Dateien',
|
||||
'PORTAL_MODULE_SOURCE' => 'Quelle',
|
||||
'PORTAL_MODULE_TARGET' => 'Ziel',
|
||||
'PORTAL_MODULE_STATUS' => 'Status',
|
||||
'PORTAL_MODULE_SUCCESS' => 'Erfolgreich kopiert.',
|
||||
'PORTAL_MODULE_ERROR' => 'Datei exisitert schon oder konnte nicht kopiert werden.',
|
||||
|
||||
// Install
|
||||
'PORTAL_BASIC_INSTALL' => 'Füge Basismodule hinzu',
|
||||
'PORTAL_BASIC_UNINSTALL' => 'Entferne Module von Datenbank',
|
||||
|
||||
// Logs
|
||||
'LOG_PORTAL_CONFIG' => '<strong>Portal-Einstellungen geändert</strong><br />» %s',
|
||||
|
||||
/**
|
||||
* A copy of Handyman` s MOD version check, to view it on the gallery overview
|
||||
*/
|
||||
'ANNOUNCEMENT_TOPIC' => 'Release Ankündigung',
|
||||
'CURRENT_VERSION' => 'Derzeitige Version',
|
||||
'DOWNLOAD_LATEST' => 'Neueste Version herunterladen',
|
||||
'LATEST_VERSION' => 'Neueste Version',
|
||||
'NO_INFO' => 'Der Server konnte nicht erreicht werden',
|
||||
'NOT_UP_TO_DATE' => '%s ist nicht aktuell',
|
||||
'RELEASE_ANNOUNCEMENT' => 'Ankündigungsthema',
|
||||
'UP_TO_DATE' => '%s ist aktuell',
|
||||
'VERSION_CHECK' => 'MOD Version Check',
|
||||
|
||||
// Adding the permissions
|
||||
'acl_a_manage_portal' => array('lang' => 'Kann Portal-Einstellungen ändern', 'cat' => 'misc'),
|
||||
'acl_u_view_portal' => array('lang' => 'Kann das Portal sehen', 'cat' => 'misc'),
|
||||
|
||||
));
|
||||
@@ -1,40 +0,0 @@
|
||||
<?php
|
||||
/**
|
||||
*
|
||||
* @package Board3 Portal v2
|
||||
* @copyright (c) Board3 Group ( www.board3.de )
|
||||
* @license http://opensource.org/licenses/gpl-license.php GNU Public License
|
||||
*
|
||||
*/
|
||||
|
||||
/**
|
||||
* DO NOT CHANGE
|
||||
*/
|
||||
if (!defined('IN_PHPBB'))
|
||||
{
|
||||
exit;
|
||||
}
|
||||
|
||||
if (empty($lang) || !is_array($lang))
|
||||
{
|
||||
$lang = array();
|
||||
}
|
||||
|
||||
// DEVELOPERS PLEASE NOTE
|
||||
//
|
||||
// All language files should use UTF-8 as their encoding and the files must not contain a BOM.
|
||||
//
|
||||
// Placeholders can now contain order information, e.g. instead of
|
||||
// 'Page %s of %s' you can (and should) write 'Page %1$s of %2$s', this allows
|
||||
// translators to re-order the output of data while ensuring it remains correct
|
||||
//
|
||||
// You do not need this where single placeholders are used, e.g. 'Message %d' is fine
|
||||
// equally where a string contains only two placeholders which are used to wrap text
|
||||
// in a url you again do not need to specify an order e.g., 'Click %sHERE%s' is fine
|
||||
|
||||
// Common
|
||||
$lang = array_merge($lang, array(
|
||||
'PORTAL' => 'Portal',
|
||||
'VIEWING_PORTAL' => 'Betrachtet das Portal',
|
||||
'BACK' => 'Zurück',
|
||||
));
|
||||
@@ -1,74 +0,0 @@
|
||||
<?php
|
||||
/**
|
||||
*
|
||||
* @package Board3 Portal v2 - Announcements
|
||||
* @copyright (c) Board3 Group ( www.board3.de )
|
||||
* @license http://opensource.org/licenses/gpl-license.php GNU Public License
|
||||
*
|
||||
*/
|
||||
|
||||
/**
|
||||
* DO NOT CHANGE
|
||||
*/
|
||||
if (!defined('IN_PHPBB'))
|
||||
{
|
||||
exit;
|
||||
}
|
||||
|
||||
if (empty($lang) || !is_array($lang))
|
||||
{
|
||||
$lang = array();
|
||||
}
|
||||
|
||||
// DEVELOPERS PLEASE NOTE
|
||||
//
|
||||
// All language files should use UTF-8 as their encoding and the files must not contain a BOM.
|
||||
//
|
||||
// Placeholders can now contain order information, e.g. instead of
|
||||
// 'Page %s of %s' you can (and should) write 'Page %1$s of %2$s', this allows
|
||||
// translators to re-order the output of data while ensuring it remains correct
|
||||
//
|
||||
// You do not need this where single placeholders are used, e.g. 'Message %d' is fine
|
||||
// equally where a string contains only two placeholders which are used to wrap text
|
||||
// in a url you again do not need to specify an order e.g., 'Click %sHERE%s' is fine
|
||||
$lang = array_merge($lang, array(
|
||||
'LATEST_ANNOUNCEMENTS' => 'Letzte Bekanntmachung',
|
||||
'GLOBAL_ANNOUNCEMENTS' => 'Global Bekanntmachungen',
|
||||
'GLOBAL_ANNOUNCEMENT' => 'Globale Bekanntmachung',
|
||||
'VIEW_LATEST_ANNOUNCEMENT' => '1 Bekanntmachung',
|
||||
'VIEW_LATEST_ANNOUNCEMENTS' => '%d Bekanntmachungen',
|
||||
'READ_FULL' => 'alles lesen',
|
||||
'NO_ANNOUNCEMENTS' => 'Keine Bekanntmachung',
|
||||
'POSTED_BY' => 'Autor',
|
||||
'COMMENTS' => 'Kommentare',
|
||||
'VIEW_COMMENTS' => 'Kommentare anzeigen',
|
||||
'PORTAL_POST_REPLY' => 'Kommentar schreiben',
|
||||
'TOPIC_VIEWS' => 'Zugriffe',
|
||||
'JUMP_NEWEST' => 'Zum letzten Beitrag springen',
|
||||
'JUMP_FIRST' => 'Zum ersten Beitrag springen',
|
||||
'JUMP_TO_POST' => 'Rufe den Beitrag auf',
|
||||
|
||||
// ACP
|
||||
'ACP_PORTAL_ANNOUNCE_SETTINGS' => 'Einstellungen für Bekanntmachungen',
|
||||
'ACP_PORTAL_ANNOUNCE_SETTINGS_EXP' => 'Hier kannst du die Einstellungen für die Bekanntmachungen ändern.',
|
||||
'PORTAL_ANNOUNCEMENTS' => 'Bekanntmachungen anzeigen',
|
||||
'PORTAL_ANNOUNCEMENTS_EXP' => 'Diesen Block auf dem Portal anzeigen.',
|
||||
'PORTAL_ANNOUNCEMENTS_STYLE' => 'Kompakter Bekanntmachungen-Block-Stil',
|
||||
'PORTAL_ANNOUNCEMENTS_STYLE_EXP' => 'Wenn "ja" ausgewählt ist, wird die kompakte Ansicht für die Bekanntmachungen angezeigt, bei "nein" die große Ansicht.',
|
||||
'PORTAL_NUMBER_OF_ANNOUNCEMENTS' => 'Anzahl der Bekanntmachungen auf dem Portal',
|
||||
'PORTAL_NUMBER_OF_ANNOUNCEMENTS_EXP' => '0 bedeutet unbegrenzt',
|
||||
'PORTAL_ANNOUNCEMENTS_DAY' => 'Die Anzahl der Tage, während der die Bekanntmachung angezeigt werden soll',
|
||||
'PORTAL_ANNOUNCEMENTS_DAY_EXP' => '0 bedeutet unbegrenzt',
|
||||
'PORTAL_ANNOUNCEMENTS_LENGTH' => 'Maximale Länge der Bekanntmachungen',
|
||||
'PORTAL_ANNOUNCEMENTS_LENGTH_EXP' => '0 bedeutet unbegrenzt',
|
||||
'PORTAL_GLOBAL_ANNOUNCEMENTS_FORUM' => 'Foren der Bekanntmachungen',
|
||||
'PORTAL_GLOBAL_ANNOUNCEMENTS_FORUM_EXP' => 'Die ID des Forums, aus welchem die Bekanntmachungen angezeigt werden sollen. Frei lassen, um aus allen Foren anzeigen zu lassen. Falls "Foren ausschließen" auf "Ja" steht, wähle die Foren die du ausschließen willst.<br />Falls "Foren ausschließen" auf "Nein" steht, wähle die Foren die du sehen willst.<br />Wähle mehrere Foren aus/ab, indem du beim Klicken die <samp>Strg</samp>-Taste drückst.',
|
||||
'PORTAL_ANNOUNCEMENTS_FORUM_EXCLUDE' => 'Foren ausschließen',
|
||||
'PORTAL_ANNOUNCEMENTS_FORUM_EXCLUDE_EXP'=> 'Wähle "Ja" wenn du die ausgewählten Foren vom Bekanntmachungen-Block ausschließen willst, und "Nein" wenn du nur die Bekanntmachungen aus den ausgewählten Foren im Bekanntmachungen-Block sehen willst.',
|
||||
'PORTAL_ANNOUNCEMENTS_PERMISSIONS' => 'Berechtigungen prüfen anschalten?',
|
||||
'PORTAL_ANNOUNCEMENTS_PERMISSIONS_EXP' => 'Berücksichtigt Berechtigungen beim Anzeigen der Bekanntmachungen',
|
||||
'PORTAL_ANNOUNCEMENTS_ARCHIVE' => 'Das Archivsystem für die Bekanntmachungen aktivieren',
|
||||
'PORTAL_ANNOUNCEMENTS_ARCHIVE_EXP' => 'Wenn aktiviert, wird das Archivsystem und ggf. Seitenzahlen angezeigt.',
|
||||
'PORTAL_SHOW_REPLIES_VIEWS' => '"Antworten" und "Zugriffe" in Extraspalten',
|
||||
'PORTAL_SHOW_REPLIES_VIEWS_EXP' => 'Einstellung für den kompakter Bekanntmachungen-Block-Stil.<br />Wenn aktiviert, wird die Anzahl der Antworten und Zugriffe in gesonderten Spalten angezeigt. Wenn deaktiviert gibt es nur zwei Spalten und die Antworten und Zugriffe werden neben "Forum" angezeigt. Bei Darstellungsproblemen mit z.B. schmalen Styles bitte deaktivieren.',
|
||||
));
|
||||
@@ -1,54 +0,0 @@
|
||||
<?php
|
||||
/**
|
||||
*
|
||||
* @package Board3 Portal v2 - Attachments
|
||||
* @copyright (c) Board3 Group ( www.board3.de )
|
||||
* @license http://opensource.org/licenses/gpl-license.php GNU Public License
|
||||
*
|
||||
*/
|
||||
|
||||
/**
|
||||
* DO NOT CHANGE
|
||||
*/
|
||||
if (!defined('IN_PHPBB'))
|
||||
{
|
||||
exit;
|
||||
}
|
||||
|
||||
if (empty($lang) || !is_array($lang))
|
||||
{
|
||||
$lang = array();
|
||||
}
|
||||
|
||||
// DEVELOPERS PLEASE NOTE
|
||||
//
|
||||
// All language files should use UTF-8 as their encoding and the files must not contain a BOM.
|
||||
//
|
||||
// Placeholders can now contain order information, e.g. instead of
|
||||
// 'Page %s of %s' you can (and should) write 'Page %1$s of %2$s', this allows
|
||||
// translators to re-order the output of data while ensuring it remains correct
|
||||
//
|
||||
// You do not need this where single placeholders are used, e.g. 'Message %d' is fine
|
||||
// equally where a string contains only two placeholders which are used to wrap text
|
||||
// in a url you again do not need to specify an order e.g., 'Click %sHERE%s' is fine
|
||||
$lang = array_merge($lang, array(
|
||||
'DOWNLOADS' => 'Downloads',
|
||||
'NO_ATTACHMENTS' => 'Keine Dateianhänge',
|
||||
'PORTAL_ATTACHMENTS' => 'Dateianhänge-Block',
|
||||
|
||||
// ACP
|
||||
'ACP_PORTAL_ATTACHMENTS_NUMBER_SETTINGS' => 'Einstellungen für Dateianhänge',
|
||||
'ACP_PORTAL_ATTACHMENTS_NUMBER_SETTINGS_EXP' => 'Hier kannst du die Einstellungen für Dateianhänge ändern.',
|
||||
'PORTAL_ATTACHMENTS_NUMBER' => 'Anzahl der anzuzeigenden Dateianhänge',
|
||||
'PORTAL_ATTACHMENTS_NUMBER_EXP' => '0 bedeutet unbegrenzt',
|
||||
'PORTAL_ATTACHMENTS_FORUM_IDS' => 'Dateianhänge Foren',
|
||||
'PORTAL_ATTACHMENTS_FORUM_IDS_EXP' => 'Die Foren, aus welchen die Dateianhänge angezeigt werden sollen. Frei lassen, um aus allen Foren anzeigen zu lassen. Falls "Foren ausschließen" auf "Ja" steht, wähle die Foren die du ausschließen willst.<br />Falls "Foren ausschließen" auf "Nein" steht, wähle die Foren aus, aus denen du die Dateianhänge sehen willst.<br />Wähle mehrere Foren aus/ab, indem du beim Klicken die <samp>Strg</samp>-Taste drückst.',
|
||||
'PORTAL_ATTACHMENTS_FORUM_EXCLUDE' => 'Foren ausschließen',
|
||||
'PORTAL_ATTACHMENTS_FORUM_EXCLUDE_EXP' => 'Wähle "Ja" wenn du die ausgewählten Foren vom Dateianhänge-Block ausschließen willst, und "Nein" wenn du nur die Dateianhänge der ausgewählten Foren im Dateianhänge-Block sehen willst.',
|
||||
'PORTAL_ATTACHMENTS_MAX_LENGTH' => 'Maximal angezeigte Länge der Dateianhänge',
|
||||
'PORTAL_ATTACHMENTS_MAX_LENGTH_EXP' => '0 bedeutet unbegrenzt',
|
||||
'PORTAL_ATTACHMENTS_FILETYPE' => 'Dateitypen',
|
||||
'PORTAL_ATTACHMENTS_FILETYPE_EXP' => 'Falls "Dateitypen ausschließen" auf "Ja" steht, wähle die Dateitypen die du ausschließen willst.<br />Falls "Dateitypen ausschließen" auf "Nein" steht, wähle die Dateitypen die du sehen willst.<br />Wähle mehrere Foren aus/ab, indem du beim Klicken die <samp>Strg</samp>-Taste drückst.',
|
||||
'PORTAL_ATTACHMENTS_EXCLUDE' => 'Dateitypen ausschließen',
|
||||
'PORTAL_ATTACHMENTS_EXCLUDE_EXP' => 'Wähle "Ja" wenn du die ausgewählten Dateitypen vom Dateianhänge-Block ausschließen willst, und "Nein" wenn du nur die ausgewählten Dateitypen im Dateianhänge-Block sehen willst.',
|
||||
));
|
||||
@@ -1,44 +0,0 @@
|
||||
<?php
|
||||
/**
|
||||
*
|
||||
* @package Board3 Portal v2 - Birthday List
|
||||
* @copyright (c) Board3 Group ( www.board3.de )
|
||||
* @license http://opensource.org/licenses/gpl-license.php GNU Public License
|
||||
*
|
||||
*/
|
||||
|
||||
/**
|
||||
* DO NOT CHANGE
|
||||
*/
|
||||
if (!defined('IN_PHPBB'))
|
||||
{
|
||||
exit;
|
||||
}
|
||||
|
||||
if (empty($lang) || !is_array($lang))
|
||||
{
|
||||
$lang = array();
|
||||
}
|
||||
|
||||
// DEVELOPERS PLEASE NOTE
|
||||
//
|
||||
// All language files should use UTF-8 as their encoding and the files must not contain a BOM.
|
||||
//
|
||||
// Placeholders can now contain order information, e.g. instead of
|
||||
// 'Page %s of %s' you can (and should) write 'Page %1$s of %2$s', this allows
|
||||
// translators to re-order the output of data while ensuring it remains correct
|
||||
//
|
||||
// You do not need this where single placeholders are used, e.g. 'Message %d' is fine
|
||||
// equally where a string contains only two placeholders which are used to wrap text
|
||||
// in a url you again do not need to specify an order e.g., 'Click %sHERE%s' is fine
|
||||
$lang = array_merge($lang, array(
|
||||
'BIRTHDAYS_AHEAD' => 'In den nächsten %s Tagen',
|
||||
'NO_BIRTHDAYS_AHEAD' => 'In diesem Zeitraum hat kein Mitglied Geburtstag',
|
||||
|
||||
// ACP
|
||||
'ACP_PORTAL_BIRTHDAYS_SETTINGS' => 'Einstellungen für den Geburtstage-Block',
|
||||
'ACP_PORTAL_BIRTHDAYS_SETTINGS_EXP' => 'Hier kannst du die Einstellungen für den Geburtstage-Block ändern.',
|
||||
'PORTAL_BIRTHDAYS' => 'Geburtstage',
|
||||
'PORTAL_BIRTHDAYS_AHEAD' => 'Anstehende Geburtstage',
|
||||
'PORTAL_BIRTHDAYS_AHEAD_EXP' => 'Zeitraum für die Geburtstagsvorschau (Tage).<br />"0" deaktiviert die Anzeige der bevorstehenden Geburtstage.',
|
||||
));
|
||||
@@ -1,135 +0,0 @@
|
||||
<?php
|
||||
/**
|
||||
*
|
||||
* @package Board3 Portal v2 - Calendar
|
||||
* @copyright (c) Board3 Group ( www.board3.de )
|
||||
* @license http://opensource.org/licenses/gpl-license.php GNU Public License
|
||||
*
|
||||
*/
|
||||
|
||||
/**
|
||||
* DO NOT CHANGE
|
||||
*/
|
||||
if (!defined('IN_PHPBB'))
|
||||
{
|
||||
exit;
|
||||
}
|
||||
|
||||
if (empty($lang) || !is_array($lang))
|
||||
{
|
||||
$lang = array();
|
||||
}
|
||||
|
||||
// DEVELOPERS PLEASE NOTE
|
||||
//
|
||||
// All language files should use UTF-8 as their encoding and the files must not contain a BOM.
|
||||
//
|
||||
// Placeholders can now contain order information, e.g. instead of
|
||||
// 'Page %s of %s' you can (and should) write 'Page %1$s of %2$s', this allows
|
||||
// translators to re-order the output of data while ensuring it remains correct
|
||||
//
|
||||
// You do not need this where single placeholders are used, e.g. 'Message %d' is fine
|
||||
// equally where a string contains only two placeholders which are used to wrap text
|
||||
// in a url you again do not need to specify an order e.g., 'Click %sHERE%s' is fine
|
||||
$lang = array_merge($lang, array(
|
||||
'PORTAL_CALENDAR' => 'Kalender',
|
||||
'VIEW_NEXT_MONTH' => 'nächster Monat',
|
||||
'VIEW_PREVIOUS_MONTH' => 'voriger Monat',
|
||||
'EVENT_START' => 'Von',
|
||||
'EVENT_END' => 'Bis',
|
||||
'EVENT_TIME' => 'Zeit',
|
||||
'EVENT_ALL_DAY' => 'Ganztägig',
|
||||
'CURRENT_EVENTS' => 'Aktuelle Veranstaltungen',
|
||||
'NO_CUR_EVENTS' => 'Keine aktuellen Veranstaltungen',
|
||||
'UPCOMING_EVENTS' => 'Bevorstehende Veranstaltungen',
|
||||
'NO_UPCOMING_EVENTS' => 'Keine bevorstehenden Veranstaltungen',
|
||||
|
||||
'mini_cal' => array(
|
||||
'day' => array(
|
||||
'1' => 'So',
|
||||
'2' => 'Mo',
|
||||
'3' => 'Di',
|
||||
'4' => 'Mi',
|
||||
'5' => 'Do',
|
||||
'6' => 'Fr',
|
||||
'7' => 'Sa',
|
||||
),
|
||||
|
||||
'month' => array(
|
||||
'1' => 'Jan.',
|
||||
'2' => 'Feb.',
|
||||
'3' => 'Mär.',
|
||||
'4' => 'Apr.',
|
||||
'5' => 'Mai',
|
||||
'6' => 'Jun.',
|
||||
'7' => 'Jul.',
|
||||
'8' => 'Aug.',
|
||||
'9' => 'Sep.',
|
||||
'10'=> 'Okt.',
|
||||
'11'=> 'Nov.',
|
||||
'12'=> 'Dez.',
|
||||
),
|
||||
|
||||
'long_month'=> array(
|
||||
'1' => 'Januar',
|
||||
'2' => 'Februar',
|
||||
'3' => 'März',
|
||||
'4' => 'April',
|
||||
'5' => 'Mai',
|
||||
'6' => 'Juni',
|
||||
'7' => 'Juli',
|
||||
'8' => 'August',
|
||||
'9' => 'September',
|
||||
'10'=> 'Oktober',
|
||||
'11'=> 'November',
|
||||
'12'=> 'Dezember',
|
||||
),
|
||||
),
|
||||
|
||||
// ACP
|
||||
'ACP_PORTAL_CALENDAR' => 'Kalender Einstellungen',
|
||||
'ACP_PORTAL_CALENDAR_EXP' => 'Hier kannst du die Einstellungen für den Kalender ändern.',
|
||||
'ACP_PORTAL_EVENTS' => 'Kalender Veranstaltungen',
|
||||
'PORTAL_CALENDAR_TODAY_COLOR' => 'Farbe für den aktuellen Tag',
|
||||
'PORTAL_CALENDAR_TODAY_COLOR_EXP' => 'HEX oder Farbennamen sind erlaubt (Englisch!) wie z.B. #FFFFFF für Weiß oder (englische!) Farbennamen wie z.B. violet.',
|
||||
'PORTAL_CALENDAR_SUNDAY_COLOR' => 'Farbe für Sonntage',
|
||||
'PORTAL_CALENDAR_SUNDAY_COLOR_EXP' => 'HEX oder Farbennamen sind erlaubt (Englisch!) wie z.B. #FFFFFF für Weiß oder (englische!) Farbennamen wie z.B. violet.',
|
||||
'PORTAL_LONG_MONTH' => 'Langen Monatsname anzeigen',
|
||||
'PORTAL_LONG_MONTH_EXP' => 'Wenn deaktiviert, wird der Monat gekürzt z.B. Aug. statt August.',
|
||||
'PORTAL_SUNDAY_FIRST' => 'Erster Tag der Woche',
|
||||
'PORTAL_SUNDAY_FIRST_EXP' => 'Wenn deaktiviert, wird von Mo. --> So. angezeigt, ansonsten So. --> Sa.',
|
||||
'PORTAL_DISPLAY_EVENTS' => 'Veranstaltungen anzeigen',
|
||||
'PORTAL_DISPLAY_EVENTS_EXP' => 'Zeige Veranstaltungen an, die im Kalender Block erstellt wurden.',
|
||||
'PORTAL_EVENTS_MANAGE' => 'Veranstaltungen verwalten',
|
||||
'NO_EVENT_TITLE' => 'Du hast keinen Titel für die Veranstaltung angegeben.',
|
||||
'NO_EVENT_START' => 'Du hast keine Start-Zeit für die Veranstaltung angegeben.',
|
||||
'ADD_EVENT' => 'Veranstaltung hinzufügen',
|
||||
'EVENT_UPDATED' => 'Veranstaltung erfolgreich aktualisiert.',
|
||||
'EVENT_ADDED' => 'Veranstaltung erfolgreich hinzugefügt.',
|
||||
'NO_EVENT' => 'Keine Veranstaltung.',
|
||||
'EVENT_TITLE' => 'Titel der Veranstaltung',
|
||||
'EVENT_DESC' => 'Beschreibung',
|
||||
'EVENT_LINK' => 'Link zur Veranstaltung',
|
||||
'EVENT_LINK_EXP' => 'Gebe den Link zu einem Thema oder einer Website mit der Ankündigung oder dem Diskussionsthema der Veranstaltung ein.',
|
||||
'NO_EVENTS' => 'Keine Veranstaltungen',
|
||||
'ACP_PORTAL_CALENDAR_START_INCORRECT' => 'Die eingegebene Start-Zeit ist nicht korrekt. Bitte folge genau den Anweisungen.',
|
||||
'ACP_PORTAL_CALENDAR_END_INCORRECT' => 'Die eingegebene End-Zeit ist nicht korrekt. Bitte folge genau den Anweisungen.',
|
||||
'ACP_PORTAL_CALENDAR_EVENT_PAST' => 'Die Start-zeit der Veranstaltung muss in der Zukunft liegen.',
|
||||
'ACP_PORTAL_EVENT_START_DAY' => 'Start-Datum der Veranstaltung',
|
||||
'ACP_PORTAL_EVENT_START_DAY_EXP' => 'Gebe das Datum ein, an dem die Veranstaltung beginnt. Das Datum muss in folgendem Format sein: TT-MM-JJJJ',
|
||||
'ACP_PORTAL_EVENT_START_TIME' => 'Start-Zeit der Veranstaltung',
|
||||
'ACP_PORTAL_EVENT_START_TIME_EXP' => 'Gebe die Zeit ein, zu der die Veranstaltung beginnt. Die Zeit muss im 24 Stunden Format sein, z.B. 23:12',
|
||||
'ACP_PORTAL_EVENT_END_DAY' => 'End-Datum der Veranstaltung',
|
||||
'ACP_PORTAL_EVENT_END_DAY_EXP' => 'Gebe das Datum ein, an dem die Veranstaltung endet. Das Datum muss in folgendem Format sein: TT-MM-JJJJ',
|
||||
'ACP_PORTAL_EVENT_END_TIME' => 'End-Zeit der Veranstaltung',
|
||||
'ACP_PORTAL_EVENT_END_TIME_EXP' => 'Gebe die Zeit ein, zu der die Veranstaltung endet. Die Zeit muss im 24 Stunden Forrmat sein, z.B. 23:12',
|
||||
'ACP_PORTAL_CALENDAR_EVENT_START_FIRST' => 'Das Ende der Veranstaltung muss nach dem Beginn der Veranstaltung liegen.',
|
||||
'ACP_PORTAL_CALENDAR_PERMISSION' => 'Berechtigungen für die Veranstaltung',
|
||||
'ACP_PORTAL_CALENDAR_PERMISSION_EXP' => 'Wähle die Gruppen aus, denen es erlaubt sein soll die Veranstaltung zu sehen. Falls alle Benutzer die Veranstaltung sehen sollen, dann wähle nichts aus.<br />Wähle mehrere Gruppen aus/ab, indem du beim Klicken die <samp>Strg</samp>-Taste drückst.',
|
||||
'PORTAL_EVENTS_URL_NEW_WINDOW' => 'Öffne externe Veranstaltungsverknüpfungen in einem neuen Fenster',
|
||||
|
||||
// Logs
|
||||
'LOG_PORTAL_EVENT_UPDATED' => '<strong>Veranstaltung aktualisiert</strong><br />» %s',
|
||||
'LOG_PORTAL_EVENT_ADDED' => '<strong>Veranstaltung hinzugefügt</strong><br />» %s',
|
||||
'LOG_PORTAL_EVENT_REMOVED' => '<strong>Veranstaltung entfernt</strong><br />» %s',
|
||||
));
|
||||
@@ -1,42 +0,0 @@
|
||||
<?php
|
||||
/**
|
||||
*
|
||||
* @package Board3 Portal v2 - Clock
|
||||
* @copyright (c) Board3 Group ( www.board3.de )
|
||||
* @license http://opensource.org/licenses/gpl-license.php GNU Public License
|
||||
*
|
||||
*/
|
||||
|
||||
/**
|
||||
* DO NOT CHANGE
|
||||
*/
|
||||
if (!defined('IN_PHPBB'))
|
||||
{
|
||||
exit;
|
||||
}
|
||||
|
||||
if (empty($lang) || !is_array($lang))
|
||||
{
|
||||
$lang = array();
|
||||
}
|
||||
|
||||
// DEVELOPERS PLEASE NOTE
|
||||
//
|
||||
// All language files should use UTF-8 as their encoding and the files must not contain a BOM.
|
||||
//
|
||||
// Placeholders can now contain order information, e.g. instead of
|
||||
// 'Page %s of %s' you can (and should) write 'Page %1$s of %2$s', this allows
|
||||
// translators to re-order the output of data while ensuring it remains correct
|
||||
//
|
||||
// You do not need this where single placeholders are used, e.g. 'Message %d' is fine
|
||||
// equally where a string contains only two placeholders which are used to wrap text
|
||||
// in a url you again do not need to specify an order e.g., 'Click %sHERE%s' is fine
|
||||
$lang = array_merge($lang, array(
|
||||
'CLOCK' => 'Uhr',
|
||||
|
||||
// ACP
|
||||
'ACP_PORTAL_CLOCK_SETTINGS' => 'Uhr Einstellungen',
|
||||
'ACP_PORTAL_CLOCK_SETTINGS_EXP' => 'Hier kannst du die Einstellungen für die Uhr ändern',
|
||||
'ACP_PORTAL_CLOCK_SRC' => 'Uhr',
|
||||
'ACP_PORTAL_CLOCK_SRC_EXP' => 'Gebe den Dateinamen der Uhr ein. Die Uhr muss unter folgendem Pfad gespeichert sein: styles/*yourstyle*/theme/images/portal/.',
|
||||
));
|
||||
@@ -1,48 +0,0 @@
|
||||
<?php
|
||||
/**
|
||||
*
|
||||
* @package Board3 Portal v2 - Custom
|
||||
* @copyright (c) Board3 Group ( www.board3.de )
|
||||
* @license http://opensource.org/licenses/gpl-license.php GNU Public License
|
||||
*
|
||||
*/
|
||||
|
||||
/**
|
||||
* DO NOT CHANGE
|
||||
*/
|
||||
if (!defined('IN_PHPBB'))
|
||||
{
|
||||
exit;
|
||||
}
|
||||
|
||||
if (empty($lang) || !is_array($lang))
|
||||
{
|
||||
$lang = array();
|
||||
}
|
||||
|
||||
// DEVELOPERS PLEASE NOTE
|
||||
//
|
||||
// All language files should use UTF-8 as their encoding and the files must not contain a BOM.
|
||||
//
|
||||
// Placeholders can now contain order information, e.g. instead of
|
||||
// 'Page %s of %s' you can (and should) write 'Page %1$s of %2$s', this allows
|
||||
// translators to re-order the output of data while ensuring it remains correct
|
||||
//
|
||||
// You do not need this where single placeholders are used, e.g. 'Message %d' is fine
|
||||
// equally where a string contains only two placeholders which are used to wrap text
|
||||
// in a url you again do not need to specify an order e.g., 'Click %sHERE%s' is fine
|
||||
$lang = array_merge($lang, array(
|
||||
'PORTAL_CUSTOM' => 'Eigener Block',
|
||||
|
||||
// ACP
|
||||
'ACP_PORTAL_CUSTOM_SETTINGS' => 'Custom Block Settings',
|
||||
'ACP_PORTAL_CUSTOM_SETTINGS_EXP' => 'Einstellungen für den eigenen Block',
|
||||
'ACP_PORTAL_CUSTOM_CODE_SHORT' => 'Der eingegebene Code ist nicht lang genug.',
|
||||
'ACP_PORTAL_CUSTOM_PREVIEW' => 'Vorschau',
|
||||
'ACP_PORTAL_CUSTOM_CODE' => 'Code für den eigenen Block',
|
||||
'ACP_PORTAL_CUSTOM_CODE_EXP' => 'Ändere den Code für deinen eigenen Block (HTML oder BBCode).',
|
||||
'ACP_PORTAL_CUSTOM_PERMISSION' => 'Berechtigungen für den eigenen Block',
|
||||
'ACP_PORTAL_CUSTOM_PERMISSION_EXP' => 'Wähle die Gruppen aus, die den eigenen Block sehen dürfen. <br />Wähle mehrere Gruppen aus/ab, indem du beim Klicken die <samp>Strg</samp>-Taste drückst.',
|
||||
'ACP_PORTAL_CUSTOM_BBCODE' => 'BBCode für den eigenen Block aktivieren',
|
||||
'ACP_PORTAL_CUSTOM_BBCODE_EXP' => 'BBCode kann dann in diesem Block benutzt werden. Ansonsten wird HTML direkt geparst.',
|
||||
));
|
||||
@@ -1,65 +0,0 @@
|
||||
<?php
|
||||
/**
|
||||
*
|
||||
* @package Board3 Portal v2 - Donation
|
||||
* @copyright (c) Board3 Group ( www.board3.de )
|
||||
* @license http://opensource.org/licenses/gpl-license.php GNU Public License
|
||||
*
|
||||
*/
|
||||
|
||||
/**
|
||||
* DO NOT CHANGE
|
||||
*/
|
||||
if (!defined('IN_PHPBB'))
|
||||
{
|
||||
exit;
|
||||
}
|
||||
|
||||
if (empty($lang) || !is_array($lang))
|
||||
{
|
||||
$lang = array();
|
||||
}
|
||||
|
||||
// DEVELOPERS PLEASE NOTE
|
||||
//
|
||||
// All language files should use UTF-8 as their encoding and the files must not contain a BOM.
|
||||
//
|
||||
// Placeholders can now contain order information, e.g. instead of
|
||||
// 'Page %s of %s' you can (and should) write 'Page %1$s of %2$s', this allows
|
||||
// translators to re-order the output of data while ensuring it remains correct
|
||||
//
|
||||
// You do not need this where single placeholders are used, e.g. 'Message %d' is fine
|
||||
// equally where a string contains only two placeholders which are used to wrap text
|
||||
// in a url you again do not need to specify an order e.g., 'Click %sHERE%s' is fine
|
||||
$lang = array_merge($lang, array(
|
||||
'DONATION' => 'PayPal-Spenden',
|
||||
'DONATION_TEXT' => 'ist eine Webseite ohne jedes Gewinninteresse. Jeder der dieses Projekt unterstützen möchte, kann dies mit einer kleinen PayPal-Spende tun, damit die Rechnungen für den Server, die Domain, etc. bezahlt werden können.',
|
||||
'PAY_MSG' => 'Betrag bitte mit Punkt statt Komma trennen, z.B. 3.50',
|
||||
'PAY_ITEM' => 'Freiwillige Foren-Spende',
|
||||
|
||||
'AUD' => 'Australische Dollar (AUD)',
|
||||
'CAD' => 'Kanadische Dollar (CAD)',
|
||||
'CZK' => 'Tschechische Kronen (CZK)',
|
||||
'DKK' => 'Dänische Kronen (DKK)',
|
||||
'HKD' => 'Hongkong-Dollar (HKD)',
|
||||
'HUF' => 'Ungarische Forint (HUF)',
|
||||
'NZD' => 'Neuseeland-Dollar (NZD)',
|
||||
'NOK' => 'Norwegische Kronen (NOK)',
|
||||
'PLN' => 'Polnische Zloty (PLN)',
|
||||
'GBP' => 'Britische Pfund (GBP)',
|
||||
'SGD' => 'Singapur-Dollar (SGD)',
|
||||
'SEK' => 'Schwedische Kronen (SEK)',
|
||||
'CHF' => 'Schweizer Franken (CHF)',
|
||||
'JPY' => 'Japanische Yen (JPY)',
|
||||
'USD' => 'US-Dollar (USD)',
|
||||
'EUR' => 'Euro (EUR)',
|
||||
'MXN' => 'Mexikanische Pesos (MXN)',
|
||||
'ILS' => 'Neue Israelische Schekel (ILS)',
|
||||
|
||||
// ACP
|
||||
'ACP_PORTAL_PAYPAL_SETTINGS' => 'Paypal Einstellungen',
|
||||
'ACP_PORTAL_PAYPAL_SETTINGS_EXP' => 'Hier kannst du die Paypal Einstellungen ändern.',
|
||||
'PORTAL_PAY_ACC' => 'Paypal Account',
|
||||
'PORTAL_PAY_ACC_EXP' => 'Gib deine e-mail-Adresse an, die du bei Paypal benutzt, z.B. xxx@xxx.com',
|
||||
'PORTAL_PAY_CUSTOM' => 'Benutzername an die Paypal Zahlung anhängen',
|
||||
));
|
||||
@@ -1,36 +0,0 @@
|
||||
<?php
|
||||
/**
|
||||
*
|
||||
* @package Board3 Portal v2 - Forumlist
|
||||
* @copyright (c) Board3 Group ( www.board3.de )
|
||||
* @license http://opensource.org/licenses/gpl-license.php GNU Public License
|
||||
*
|
||||
*/
|
||||
|
||||
/**
|
||||
* DO NOT CHANGE
|
||||
*/
|
||||
if (!defined('IN_PHPBB'))
|
||||
{
|
||||
exit;
|
||||
}
|
||||
|
||||
if (empty($lang) || !is_array($lang))
|
||||
{
|
||||
$lang = array();
|
||||
}
|
||||
|
||||
// DEVELOPERS PLEASE NOTE
|
||||
//
|
||||
// All language files should use UTF-8 as their encoding and the files must not contain a BOM.
|
||||
//
|
||||
// Placeholders can now contain order information, e.g. instead of
|
||||
// 'Page %s of %s' you can (and should) write 'Page %1$s of %2$s', this allows
|
||||
// translators to re-order the output of data while ensuring it remains correct
|
||||
//
|
||||
// You do not need this where single placeholders are used, e.g. 'Message %d' is fine
|
||||
// equally where a string contains only two placeholders which are used to wrap text
|
||||
// in a url you again do not need to specify an order e.g., 'Click %sHERE%s' is fine
|
||||
$lang = array_merge($lang, array(
|
||||
'PORTAL_FORUMLIST' => 'Forumliste',
|
||||
));
|
||||
@@ -1,47 +0,0 @@
|
||||
<?php
|
||||
/**
|
||||
*
|
||||
* @package Board3 Portal v2 - Friends
|
||||
* @copyright (c) Board3 Group ( www.board3.de )
|
||||
* @license http://opensource.org/licenses/gpl-license.php GNU Public License
|
||||
*
|
||||
*/
|
||||
|
||||
/**
|
||||
* DO NOT CHANGE
|
||||
*/
|
||||
if (!defined('IN_PHPBB'))
|
||||
{
|
||||
exit;
|
||||
}
|
||||
|
||||
if (empty($lang) || !is_array($lang))
|
||||
{
|
||||
$lang = array();
|
||||
}
|
||||
|
||||
// DEVELOPERS PLEASE NOTE
|
||||
//
|
||||
// All language files should use UTF-8 as their encoding and the files must not contain a BOM.
|
||||
//
|
||||
// Placeholders can now contain order information, e.g. instead of
|
||||
// 'Page %s of %s' you can (and should) write 'Page %1$s of %2$s', this allows
|
||||
// translators to re-order the output of data while ensuring it remains correct
|
||||
//
|
||||
// You do not need this where single placeholders are used, e.g. 'Message %d' is fine
|
||||
// equally where a string contains only two placeholders which are used to wrap text
|
||||
// in a url you again do not need to specify an order e.g., 'Click %sHERE%s' is fine
|
||||
$lang = array_merge($lang, array(
|
||||
'FRIENDS' => 'Freunde',
|
||||
'FRIENDS_OFFLINE' => 'Offline',
|
||||
'FRIENDS_ONLINE' => 'Online',
|
||||
'NO_FRIENDS' => 'Derzeit sind keine Freunde definiert',
|
||||
'NO_FRIENDS_OFFLINE' => 'Keine Freunde offline',
|
||||
'NO_FRIENDS_ONLINE' => 'Keine Freunde online',
|
||||
|
||||
// ACP
|
||||
'ACP_PORTAL_FRIENDS_SETTINGS' => 'Einstellungen für den Freunde-Block',
|
||||
'ACP_PORTAL_FRIENDS_SETTINGS_EXP' => 'Hier kannst du die Einstellungen für den Freunde-Block ändern.',
|
||||
'PORTAL_MAX_ONLINE_FRIENDS' => 'Limitierung der Anzeige Freunde online',
|
||||
'PORTAL_MAX_ONLINE_FRIENDS_EXP' => 'Limitiert die Anzeige Freunde online auf den angegebenen Wert.',
|
||||
));
|
||||
@@ -1,43 +0,0 @@
|
||||
<?php
|
||||
/**
|
||||
*
|
||||
* @package Board3 Portal v2 - Latest Bots
|
||||
* @copyright (c) Board3 Group ( www.board3.de )
|
||||
* @license http://opensource.org/licenses/gpl-license.php GNU Public License
|
||||
*
|
||||
*/
|
||||
|
||||
/**
|
||||
* DO NOT CHANGE
|
||||
*/
|
||||
if (!defined('IN_PHPBB'))
|
||||
{
|
||||
exit;
|
||||
}
|
||||
|
||||
if (empty($lang) || !is_array($lang))
|
||||
{
|
||||
$lang = array();
|
||||
}
|
||||
|
||||
// DEVELOPERS PLEASE NOTE
|
||||
//
|
||||
// All language files should use UTF-8 as their encoding and the files must not contain a BOM.
|
||||
//
|
||||
// Placeholders can now contain order information, e.g. instead of
|
||||
// 'Page %s of %s' you can (and should) write 'Page %1$s of %2$s', this allows
|
||||
// translators to re-order the output of data while ensuring it remains correct
|
||||
//
|
||||
// You do not need this where single placeholders are used, e.g. 'Message %d' is fine
|
||||
// equally where a string contains only two placeholders which are used to wrap text
|
||||
// in a url you again do not need to specify an order e.g., 'Click %sHERE%s' is fine
|
||||
$lang = array_merge($lang, array(
|
||||
'LATEST_BOTS' => 'Letzte Bots',
|
||||
'LAST_VISITED_BOTS' => 'Die letzten Bots',
|
||||
|
||||
// ACP
|
||||
'ACP_PORTAL_BOTS_SETTINGS' => 'Einstellungen für Bot-Besuche',
|
||||
'ACP_PORTAL_BOTS_SETTINGS_EXP' => 'Hier kannst du die Einstellungen für Bot-Besuche ändern.',
|
||||
'PORTAL_LAST_VISITED_BOTS_NUMBER' => 'Anzahl der anzuzeigenden Bots',
|
||||
'PORTAL_LAST_VISITED_BOTS_NUMBER_EXP' => '0 bedeutet unbegrenzt',
|
||||
));
|
||||
@@ -1,42 +0,0 @@
|
||||
<?php
|
||||
/**
|
||||
*
|
||||
* @package Board3 Portal v2 - Latest Members
|
||||
* @copyright (c) Board3 Group ( www.board3.de )
|
||||
* @license http://opensource.org/licenses/gpl-license.php GNU Public License
|
||||
*
|
||||
*/
|
||||
|
||||
/**
|
||||
* DO NOT CHANGE
|
||||
*/
|
||||
if (!defined('IN_PHPBB'))
|
||||
{
|
||||
exit;
|
||||
}
|
||||
|
||||
if (empty($lang) || !is_array($lang))
|
||||
{
|
||||
$lang = array();
|
||||
}
|
||||
|
||||
// DEVELOPERS PLEASE NOTE
|
||||
//
|
||||
// All language files should use UTF-8 as their encoding and the files must not contain a BOM.
|
||||
//
|
||||
// Placeholders can now contain order information, e.g. instead of
|
||||
// 'Page %s of %s' you can (and should) write 'Page %1$s of %2$s', this allows
|
||||
// translators to re-order the output of data while ensuring it remains correct
|
||||
//
|
||||
// You do not need this where single placeholders are used, e.g. 'Message %d' is fine
|
||||
// equally where a string contains only two placeholders which are used to wrap text
|
||||
// in a url you again do not need to specify an order e.g., 'Click %sHERE%s' is fine
|
||||
$lang = array_merge($lang, array(
|
||||
'LATEST_MEMBERS' => 'Neue Mitglieder',
|
||||
|
||||
// ACP
|
||||
'ACP_PORTAL_MEMBERS_SETTINGS' => 'Einstellungen für neue Mitglieder',
|
||||
'ACP_PORTAL_MEMBERS_SETTINGS_EXP' => 'Hier kannst du die Einstellungen für neue Mitglieder ändern.',
|
||||
'PORTAL_MAX_LAST_MEMBER' => 'Anzahl der anzuzeigenden Mitglieder',
|
||||
'PORTAL_MAX_LAST_MEMBER_EXP' => '0 bedeutet unbegrenzt',
|
||||
));
|
||||
@@ -1,45 +0,0 @@
|
||||
<?php
|
||||
/**
|
||||
*
|
||||
* @package Board3 Portal v2 - Leaders
|
||||
* @copyright (c) Board3 Group ( www.board3.de )
|
||||
* @license http://opensource.org/licenses/gpl-license.php GNU Public License
|
||||
*
|
||||
*/
|
||||
|
||||
/**
|
||||
* DO NOT CHANGE
|
||||
*/
|
||||
if (!defined('IN_PHPBB'))
|
||||
{
|
||||
exit;
|
||||
}
|
||||
|
||||
if (empty($lang) || !is_array($lang))
|
||||
{
|
||||
$lang = array();
|
||||
}
|
||||
|
||||
// DEVELOPERS PLEASE NOTE
|
||||
//
|
||||
// All language files should use UTF-8 as their encoding and the files must not contain a BOM.
|
||||
//
|
||||
// Placeholders can now contain order information, e.g. instead of
|
||||
// 'Page %s of %s' you can (and should) write 'Page %1$s of %2$s', this allows
|
||||
// translators to re-order the output of data while ensuring it remains correct
|
||||
//
|
||||
// You do not need this where single placeholders are used, e.g. 'Message %d' is fine
|
||||
// equally where a string contains only two placeholders which are used to wrap text
|
||||
// in a url you again do not need to specify an order e.g., 'Click %sHERE%s' is fine
|
||||
$lang = array_merge($lang, array(
|
||||
'NO_ADMINISTRATORS_P' => 'Keine Administratoren',
|
||||
'NO_MODERATORS_P' => 'Keine Moderatoren',
|
||||
'NO_GROUPS_P' => 'Keine Gruppen',
|
||||
'ACP_PORTAL_LEADERS' => 'Das Team',
|
||||
|
||||
// ACP
|
||||
'ACP_PORTAL_LEADERS' => 'Team Block Einstellungen',
|
||||
'ACP_PORTAL_LEADERS_EXP' => 'Hier kannst Du den Team-Block anpassen',
|
||||
'PORTAL_LEADERS_EXT' => 'Erweiterter Team-Block',
|
||||
'PORTAL_LEADERS_EXT_EXP' => 'Der standard Block listet alle Admins und Moderatoren auf, der erweiterte Team-Block listet zusätzlich alle nicht-versteckten Gruppen inklusive Legende auf.',
|
||||
));
|
||||
@@ -1,37 +0,0 @@
|
||||
<?php
|
||||
/**
|
||||
*
|
||||
* @package Board3 Portal v2 - Link Us
|
||||
* @copyright (c) Board3 Group ( www.board3.de )
|
||||
* @license http://opensource.org/licenses/gpl-license.php GNU Public License
|
||||
*
|
||||
*/
|
||||
|
||||
/**
|
||||
* DO NOT CHANGE
|
||||
*/
|
||||
if (!defined('IN_PHPBB'))
|
||||
{
|
||||
exit;
|
||||
}
|
||||
|
||||
if (empty($lang) || !is_array($lang))
|
||||
{
|
||||
$lang = array();
|
||||
}
|
||||
|
||||
// DEVELOPERS PLEASE NOTE
|
||||
//
|
||||
// All language files should use UTF-8 as their encoding and the files must not contain a BOM.
|
||||
//
|
||||
// Placeholders can now contain order information, e.g. instead of
|
||||
// 'Page %s of %s' you can (and should) write 'Page %1$s of %2$s', this allows
|
||||
// translators to re-order the output of data while ensuring it remains correct
|
||||
//
|
||||
// You do not need this where single placeholders are used, e.g. 'Message %d' is fine
|
||||
// equally where a string contains only two placeholders which are used to wrap text
|
||||
// in a url you again do not need to specify an order e.g., 'Click %sHERE%s' is fine
|
||||
$lang = array_merge($lang, array(
|
||||
'LINK_US' => 'Link zu uns ',
|
||||
'LINK_US_TXT' => 'Benutze bitte diesen Link um <strong>%s</strong> bei dir zu verlinken:',
|
||||
));
|
||||
@@ -1,56 +0,0 @@
|
||||
<?php
|
||||
/**
|
||||
*
|
||||
* @package Board3 Portal v2 - Links
|
||||
* @copyright (c) Board3 Group ( www.board3.de )
|
||||
* @license http://opensource.org/licenses/gpl-license.php GNU Public License
|
||||
*
|
||||
*/
|
||||
|
||||
/**
|
||||
* DO NOT CHANGE
|
||||
*/
|
||||
if (!defined('IN_PHPBB'))
|
||||
{
|
||||
exit;
|
||||
}
|
||||
|
||||
if (empty($lang) || !is_array($lang))
|
||||
{
|
||||
$lang = array();
|
||||
}
|
||||
|
||||
// DEVELOPERS PLEASE NOTE
|
||||
//
|
||||
// All language files should use UTF-8 as their encoding and the files must not contain a BOM.
|
||||
//
|
||||
// Placeholders can now contain order information, e.g. instead of
|
||||
// 'Page %s of %s' you can (and should) write 'Page %1$s of %2$s', this allows
|
||||
// translators to re-order the output of data while ensuring it remains correct
|
||||
//
|
||||
// You do not need this where single placeholders are used, e.g. 'Message %d' is fine
|
||||
// equally where a string contains only two placeholders which are used to wrap text
|
||||
// in a url you again do not need to specify an order e.g., 'Click %sHERE%s' is fine
|
||||
$lang = array_merge($lang, array(
|
||||
'PORTAL_LINKS' => 'Links',
|
||||
'LINKS_NO_LINKS' => 'Keine Links vorhanden',
|
||||
|
||||
// ACP
|
||||
'ACP_PORTAL_LINKS' => 'Links-Einstellungen',
|
||||
'ACP_PORTAL_LINKS_EXP' => 'Einstellungen für die Links ändern.',
|
||||
'ACP_PORTAL_LINK_TITLE' => 'Titel',
|
||||
'ACP_PORTAL_LINK_TYPE' => 'Link Typ',
|
||||
'ACP_PORTAL_LINK_TYPE_EXP' => 'Falls dein Link auf dein Forum verweist, dann wähle bitte "Interner Link" um ungewollte Logouts zu verhindern.',
|
||||
'ACP_PORTAL_LINK_INT' => 'Interner Link',
|
||||
'ACP_PORTAL_LINK_EXT' => 'Externer Link',
|
||||
'ACP_PORTAL_LINK_ADD' => 'Link erstellen',
|
||||
'ACP_PORTAL_LINK_URL' => 'Link URL',
|
||||
'ACP_PORTAL_LINK_URL_EXP' => 'Externe Links:<br />Alle Links sollten mit einem http:// eingegeben werden.<br /><br />Interne Links:<br />Gebe nur die PHP Datei als Link URL ein, z.B. index.php?style=4.',
|
||||
'ACP_PORTAL_LINK_PERMISSION' => 'Link Berechtigungen',
|
||||
'ACP_PORTAL_LINK_PERMISSION_EXP'=> 'Wähle die Gruppen aus die berechtigt sein sollen den Link zu sehen. Falls alle Benutzer den Link sehen sollen, dann wähle nichts aus.<br />Wähle mehrere Gruppen aus/ab indem du <samp>STRG</samp> gedrückt hältst und klickst.',
|
||||
'ACP_PORTAL_LINKS_NEW_WINDOW' => 'Öffne externe Verknüpfungen in einem neuen Fenster',
|
||||
|
||||
// Errors
|
||||
'NO_LINK_TITLE' => 'Du musst einen Titel für diesen Link angeben.',
|
||||
'NO_LINK_URL' => 'Du musst eine Link URL eingeben.',
|
||||
));
|
||||
@@ -1,69 +0,0 @@
|
||||
<?php
|
||||
/**
|
||||
*
|
||||
* @package Board3 Portal v2 - Main Menu
|
||||
* @copyright (c) Board3 Group ( www.board3.de )
|
||||
* @license http://opensource.org/licenses/gpl-license.php GNU Public License
|
||||
*
|
||||
*/
|
||||
|
||||
/**
|
||||
* DO NOT CHANGE
|
||||
*/
|
||||
if (!defined('IN_PHPBB'))
|
||||
{
|
||||
exit;
|
||||
}
|
||||
|
||||
if (empty($lang) || !is_array($lang))
|
||||
{
|
||||
$lang = array();
|
||||
}
|
||||
|
||||
// DEVELOPERS PLEASE NOTE
|
||||
//
|
||||
// All language files should use UTF-8 as their encoding and the files must not contain a BOM.
|
||||
//
|
||||
// Placeholders can now contain order information, e.g. instead of
|
||||
// 'Page %s of %s' you can (and should) write 'Page %1$s of %2$s', this allows
|
||||
// translators to re-order the output of data while ensuring it remains correct
|
||||
//
|
||||
// You do not need this where single placeholders are used, e.g. 'Message %d' is fine
|
||||
// equally where a string contains only two placeholders which are used to wrap text
|
||||
// in a url you again do not need to specify an order e.g., 'Click %sHERE%s' is fine
|
||||
$lang = array_merge($lang, array(
|
||||
'M_MENU' => 'Menü',
|
||||
'M_CONTENT' => 'Inhalt',
|
||||
'M_ACP' => 'Administrations-Bereich',
|
||||
'M_HELP' => 'Hilfe',
|
||||
'M_BBCODE' => 'BBCode-Anleitung',
|
||||
'M_TERMS' => 'Nutzungsbedingungen',
|
||||
'M_PRV' => 'Datenschutzrichtlinie',
|
||||
'M_SEARCH' => 'Suche',
|
||||
'MENU_NO_LINKS' => 'Keine Links',
|
||||
|
||||
// ACP
|
||||
'ACP_PORTAL_MENU' => 'Hauptmenü-Einstellungen',
|
||||
'ACP_PORTAL_MENU_LINK_SETTINGS' => 'Link Einstellungen',
|
||||
'ACP_PORTAL_MENU_EXP' => 'Verwalte dein Hauptmenü',
|
||||
'ACP_PORTAL_MENU_MANAGE' => 'Hauptmenü-Verwaltung',
|
||||
'ACP_PORTAL_MENU_MANAGE_EXP' => 'Du kannst die Links deines Hauptmenüs hier verwalten.',
|
||||
'ACP_PORTAL_MENU_CAT' => 'Kategorie',
|
||||
'ACP_PORTAL_MENU_IS_CAT' => 'Setze Link als Kategorie',
|
||||
'ACP_PORTAL_MENU_INT' => 'Interner Link',
|
||||
'ACP_PORTAL_MENU_EXT' => 'Externer Link',
|
||||
'ACP_PORTAL_MENU_TITLE' => 'Titel',
|
||||
'ACP_PORTAL_MENU_URL' => 'Link URL',
|
||||
'ACP_PORTAL_MENU_ADD' => 'Link erstellen',
|
||||
'ACP_PORTAL_MENU_TYPE' => 'Link Typ',
|
||||
'ACP_PORTAL_MENU_TYPE_EXP' => 'Falls dein Link auf dein Forum verweist, dann wähle bitte "Interner Link" um ungewollte Logouts zu verhindern.',
|
||||
'ACP_PORTAL_MENU_CREATE_CAT' => 'Du musst zuerst eine Kategorie erstellen.',
|
||||
'ACP_PORTAL_MENU_URL_EXP' => 'Externe Links:<br />Alle Links sollten mit einem http:// eingegeben werden.<br /><br />Interne Links:<br />Gebe nur die PHP Datei als Link URL ein, z.B. index.php?style=4.',
|
||||
'ACP_PORTAL_MENU_PERMISSION' => 'Link Berechtigungen',
|
||||
'ACP_PORTAL_MENU_PERMISSION_EXP'=> 'Wähle die Gruppen aus die berechtigt sein sollen den Link zu sehen. Falls alle Benutzer den Link sehen sollen, dann wähle nichts aus.<br />Wähle mehrere Gruppen aus/ab indem du <samp>STRG</samp> gedrückt hältst und klickst.',
|
||||
'ACP_PORTAL_MENU_EXT_NEW_WINDOW'=> 'Öffne externe Verknüpfungen in einem neuen Fenster',
|
||||
|
||||
// Errors
|
||||
'NO_LINK_TITLE' => 'Du musst einen Titel für diesen Link angeben.',
|
||||
'NO_LINK_URL' => 'Du musst eine Link URL eingeben.',
|
||||
));
|
||||
@@ -1,70 +0,0 @@
|
||||
<?php
|
||||
/**
|
||||
*
|
||||
* @package Board3 Portal v2 - News
|
||||
* @copyright (c) Board3 Group ( www.board3.de )
|
||||
* @license http://opensource.org/licenses/gpl-license.php GNU Public License
|
||||
*
|
||||
*/
|
||||
|
||||
/**
|
||||
* DO NOT CHANGE
|
||||
*/
|
||||
if (!defined('IN_PHPBB'))
|
||||
{
|
||||
exit;
|
||||
}
|
||||
|
||||
if (empty($lang) || !is_array($lang))
|
||||
{
|
||||
$lang = array();
|
||||
}
|
||||
|
||||
// DEVELOPERS PLEASE NOTE
|
||||
//
|
||||
// All language files should use UTF-8 as their encoding and the files must not contain a BOM.
|
||||
//
|
||||
// Placeholders can now contain order information, e.g. instead of
|
||||
// 'Page %s of %s' you can (and should) write 'Page %1$s of %2$s', this allows
|
||||
// translators to re-order the output of data while ensuring it remains correct
|
||||
//
|
||||
// You do not need this where single placeholders are used, e.g. 'Message %d' is fine
|
||||
// equally where a string contains only two placeholders which are used to wrap text
|
||||
// in a url you again do not need to specify an order e.g., 'Click %sHERE%s' is fine
|
||||
$lang = array_merge($lang, array(
|
||||
'LATEST_NEWS' => 'Aktuelle Beiträge',
|
||||
'READ_FULL' => 'alles lesen',
|
||||
'NO_NEWS' => 'Keine neuen Beiträge',
|
||||
'POSTED_BY' => 'Autor',
|
||||
'COMMENTS' => 'Kommentare',
|
||||
'VIEW_COMMENTS' => 'Kommentare anzeigen',
|
||||
'PORTAL_POST_REPLY' => 'Kommentar schreiben',
|
||||
'TOPIC_VIEWS' => 'Zugriffe',
|
||||
'JUMP_NEWEST' => 'Zum letzten Beitrag springen',
|
||||
'JUMP_FIRST' => 'Zum ersten Beitrag springen',
|
||||
'JUMP_TO_POST' => 'Rufe den Beitrag auf',
|
||||
|
||||
// ACP
|
||||
'ACP_PORTAL_NEWS_SETTINGS' => 'Aktuelle Beiträge Einstellungen',
|
||||
'ACP_PORTAL_NEWS_SETTINGS_EXP' => 'Hier kannst du die Einstellungen für die aktuellen Beiträge ändern.',
|
||||
'PORTAL_NEWS_STYLE' => 'Kompakter Block-Stil',
|
||||
'PORTAL_NEWS_STYLE_EXP' => 'Wenn "ja" ausgewählt ist, wird die kompakte Ansicht für die aktuellen Beiträge angezeigt, bei "nein" die Textansicht.',
|
||||
'PORTAL_SHOW_ALL_NEWS' => 'Zeige alle Beiträge dieses Forums',
|
||||
'PORTAL_SHOW_ALL_NEWS_EXP' => 'Auch Wichtige Beiträge.',
|
||||
'PORTAL_NUMBER_OF_NEWS' => 'Anzahl der Beiträge auf dem Portal',
|
||||
'PORTAL_NUMBER_OF_NEWS_EXP' => '0 bedeutet unbegrenzt',
|
||||
'PORTAL_NEWS_LENGTH' => 'Maximal angezeigte Länge der Beiträge',
|
||||
'PORTAL_NEWS_LENGTH_EXP' => '0 bedeutet unbegrenzt',
|
||||
'PORTAL_NEWS_FORUM' => 'Beiträge Foren',
|
||||
'PORTAL_NEWS_FORUM_EXP' => 'Die Foren, aus welchen die Beiträge angezeigt werden sollen. Frei lassen, um aus allen Foren anzeigen zu lassen. Falls "Foren ausschließen" auf "Ja" steht, wähle die Foren die du ausschließen willst.<br />Falls "Foren ausschließen" auf "Nein" steht, wähle die Foren die du sehen willst.<br />Wähle mehrere Foren aus/ab, indem du beim Klicken die <samp>Strg</samp>-Taste drückst.',
|
||||
'PORTAL_NEWS_EXCLUDE' => 'Foren ausschließen',
|
||||
'PORTAL_NEWS_EXCLUDE_EXP' => 'Wähle "Ja" wenn du die ausgewählten Foren vom Aktuelle Beiträge-Block ausschließen willst, und "Nein" wenn du nur die Beiträge aus den ausgewählten Foren im Aktuelle Beiträge-Block sehen willst.',
|
||||
'PORTAL_NEWS_PERMISSIONS' => 'Berechtigungen prüfen anschalten?',
|
||||
'PORTAL_NEWS_PERMISSIONS_EXP' => 'Berücksichtigt Berechtigungen beim Anzeigen der aktuellen Beiträge',
|
||||
'PORTAL_NEWS_SHOW_LAST' => 'Nach neuesten Beiträgen sortieren',
|
||||
'PORTAL_NEWS_SHOW_LAST_EXP' => 'Wenn aktiviert, wird nach den neuesten Beiträgen sortiert. Wenn deaktiviert, wird nach den neuesten Themen sortiert.',
|
||||
'PORTAL_NEWS_ARCHIVE' => 'Das Archivsystem für die aktuellen Beiträge aktivieren',
|
||||
'PORTAL_NEWS_ARCHIVE_EXP' => 'Wenn aktiviert, wird das Archivsystem und ggf. Seitenzahlen angezeigt.',
|
||||
'PORTAL_SHOW_REPLIES_VIEWS' => '"Antworten" und "Zugriffe" in Extraspalten',
|
||||
'PORTAL_SHOW_REPLIES_VIEWS_EXP' => 'Einstellung für den kompakter Bekanntmachungen-Block-Stil.<br />Wenn aktiviert, wird die Anzahl der Antworten und Zugriffe in gesonderten Spalten angezeigt. Wenn deaktiviert gibt es nur zwei Spalten und die Antworten und Zugriffe werden neben "Forum" angezeigt. Bei Darstellungsproblemen mit z.B. schmalen Styles bitte deaktivieren.',
|
||||
));
|
||||
@@ -1,53 +0,0 @@
|
||||
<?php
|
||||
/**
|
||||
*
|
||||
* @package Board3 Portal v2 - Poll
|
||||
* @copyright (c) Board3 Group ( www.board3.de )
|
||||
* @license http://opensource.org/licenses/gpl-license.php GNU Public License
|
||||
*
|
||||
*/
|
||||
|
||||
/**
|
||||
* DO NOT CHANGE
|
||||
*/
|
||||
if (!defined('IN_PHPBB'))
|
||||
{
|
||||
exit;
|
||||
}
|
||||
|
||||
if (empty($lang) || !is_array($lang))
|
||||
{
|
||||
$lang = array();
|
||||
}
|
||||
|
||||
// DEVELOPERS PLEASE NOTE
|
||||
//
|
||||
// All language files should use UTF-8 as their encoding and the files must not contain a BOM.
|
||||
//
|
||||
// Placeholders can now contain order information, e.g. instead of
|
||||
// 'Page %s of %s' you can (and should) write 'Page %1$s of %2$s', this allows
|
||||
// translators to re-order the output of data while ensuring it remains correct
|
||||
//
|
||||
// You do not need this where single placeholders are used, e.g. 'Message %d' is fine
|
||||
// equally where a string contains only two placeholders which are used to wrap text
|
||||
// in a url you again do not need to specify an order e.g., 'Click %sHERE%s' is fine
|
||||
$lang = array_merge($lang, array(
|
||||
'PORTAL_POLL' => 'Umfrage',
|
||||
'LATEST_POLLS' => 'Neueste Umfragen',
|
||||
'NO_OPTIONS' => 'Diese Umfrage verfügt über keine Optionen.',
|
||||
'NO_POLL' => 'Derzeit gibt es keine aktuellen Umfragen',
|
||||
'RETURN_PORTAL' => '%sZurück zum Portal%s',
|
||||
|
||||
// ACP
|
||||
'ACP_PORTAL_POLLS_SETTINGS' => 'Einstellungen für Umfragen',
|
||||
'ACP_PORTAL_POLLS_SETTINGS_EXP' => 'Hier kannst du die Einstellungen für Umfragen ändern.',
|
||||
'PORTAL_POLL_TOPIC_ID' => 'Umfragen Foren',
|
||||
'PORTAL_POLL_TOPIC_ID_EXP' => 'Die Foren, aus welchen die Umfragen angezeigt werden sollen. Frei lassen, um aus allen Foren anzeigen zu lassen. Falls "Foren ausschließen" auf "Ja" steht, wähle die Foren die du ausschließen willst.<br />Falls "Foren ausschließen" auf "Nein" steht, wähle die Foren die du sehen willst.<br />Wähle mehrere Foren aus/ab, indem du beim Klicken die <samp>Strg</samp>-Taste drückst.',
|
||||
'PORTAL_POLL_EXCLUDE_ID' => 'Foren ausschließen',
|
||||
'PORTAL_POLL_EXCLUDE_ID_EXP' => 'Wähle "Ja" wenn du die ausgewählten Foren vom Umfragen-Block ausschließen willst, und "Nein" wenn du nur die Themen aus den ausgewählten Foren im Umfragen-Block sehen willst.',
|
||||
'PORTAL_POLL_LIMIT' => 'Maximale Anzahl der Umfragen',
|
||||
'PORTAL_POLL_LIMIT_EXP' => 'Die Anzahl der Umfragen, die auf dem Portal angezeigt werden sollen.',
|
||||
'PORTAL_POLL_ALLOW_VOTE' => 'Abstimmen erlauben',
|
||||
'PORTAL_POLL_ALLOW_VOTE_EXP' => 'Verfügt der Benutzer über entsprechende Berechtigungen, kann er direkt auf der Portal-Seite abstimmen.',
|
||||
'PORTAL_POLL_HIDE' => 'Abgelaufene Umfragen verbergen?',
|
||||
));
|
||||
@@ -1,41 +0,0 @@
|
||||
<?php
|
||||
/**
|
||||
*
|
||||
* @package Board3 Portal v2 - Random Member
|
||||
* @copyright (c) Board3 Group ( www.board3.de )
|
||||
* @license http://opensource.org/licenses/gpl-license.php GNU Public License
|
||||
*
|
||||
*/
|
||||
|
||||
/**
|
||||
* DO NOT CHANGE
|
||||
*/
|
||||
if (!defined('IN_PHPBB'))
|
||||
{
|
||||
exit;
|
||||
}
|
||||
|
||||
if (empty($lang) || !is_array($lang))
|
||||
{
|
||||
$lang = array();
|
||||
}
|
||||
|
||||
// DEVELOPERS PLEASE NOTE
|
||||
//
|
||||
// All language files should use UTF-8 as their encoding and the files must not contain a BOM.
|
||||
//
|
||||
// Placeholders can now contain order information, e.g. instead of
|
||||
// 'Page %s of %s' you can (and should) write 'Page %1$s of %2$s', this allows
|
||||
// translators to re-order the output of data while ensuring it remains correct
|
||||
//
|
||||
// You do not need this where single placeholders are used, e.g. 'Message %d' is fine
|
||||
// equally where a string contains only two placeholders which are used to wrap text
|
||||
// in a url you again do not need to specify an order e.g., 'Click %sHERE%s' is fine
|
||||
$lang = array_merge($lang, array(
|
||||
'PORTAL_RANDOM_MEMBER' => 'Zufälliges Profil',
|
||||
'RND_JOIN' => 'Registriert',
|
||||
'RND_POSTS' => 'Beiträge',
|
||||
'RND_OCC' => 'Tätigkeit',
|
||||
'RND_FROM' => 'Wohnort',
|
||||
'RND_WWW' => 'Webseite',
|
||||
));
|
||||
@@ -1,51 +0,0 @@
|
||||
<?php
|
||||
/**
|
||||
*
|
||||
* @package Board3 Portal v2 - Recent Module
|
||||
* @copyright (c) Board3 Group ( www.board3.de )
|
||||
* @license http://opensource.org/licenses/gpl-license.php GNU Public License
|
||||
*
|
||||
*/
|
||||
|
||||
/**
|
||||
* DO NOT CHANGE
|
||||
*/
|
||||
if (!defined('IN_PHPBB'))
|
||||
{
|
||||
exit;
|
||||
}
|
||||
|
||||
if (empty($lang) || !is_array($lang))
|
||||
{
|
||||
$lang = array();
|
||||
}
|
||||
|
||||
// DEVELOPERS PLEASE NOTE
|
||||
//
|
||||
// All language files should use UTF-8 as their encoding and the files must not contain a BOM.
|
||||
//
|
||||
// Placeholders can now contain order information, e.g. instead of
|
||||
// 'Page %s of %s' you can (and should) write 'Page %1$s of %2$s', this allows
|
||||
// translators to re-order the output of data while ensuring it remains correct
|
||||
//
|
||||
// You do not need this where single placeholders are used, e.g. 'Message %d' is fine
|
||||
// equally where a string contains only two placeholders which are used to wrap text
|
||||
// in a url you again do not need to specify an order e.g., 'Click %sHERE%s' is fine
|
||||
$lang = array_merge($lang, array(
|
||||
'PORTAL_RECENT' => 'Aktuelles',
|
||||
'PORTAL_RECENT_TOPIC' => 'Aktuelle Themen',
|
||||
'PORTAL_RECENT_ANN' => 'Aktuelle Bekanntmachungen',
|
||||
'PORTAL_RECENT_HOT_TOPIC' => 'Beliebte Themen',
|
||||
|
||||
// ACP
|
||||
'ACP_PORTAL_RECENT_SETTINGS' => 'Einstellungen für neueste Themen',
|
||||
'ACP_PORTAL_RECENT_SETTINGS_EXP' => 'Hier kannst du die Einstellungen für die neuesten Themen ändern.',
|
||||
'PORTAL_MAX_TOPIC' => 'Anzahl der neuesten Themen auf dem Portal',
|
||||
'PORTAL_MAX_TOPIC_EXP' => '0 bedeutet unbegrenzt',
|
||||
'PORTAL_RECENT_TITLE_LIMIT' => 'Maximal angezeigte Länge der neuesten Themen',
|
||||
'PORTAL_RECENT_TITLE_LIMIT_EXP' => '0 bedeutet unbegrenzt',
|
||||
'PORTAL_RECENT_FORUM' => 'Themen Foren',
|
||||
'PORTAL_RECENT_FORUM_EXP' => 'Die Foren, aus welchen die Themen angezeigt werden sollen. Frei lassen, um aus allen Foren anzeigen zu lassen. Falls "Foren ausschließen" auf "Ja" steht, wähle die Foren die du ausschließen willst.<br />Falls "Foren ausschließen" auf "Nein" steht, wähle die Foren die du sehen willst.<br />Wähle mehrere Foren aus/ab, indem du beim Klicken die <samp>Strg</samp>-Taste drückst.',
|
||||
'PORTAL_EXCLUDE_FORUM' => 'Foren ausschließen',
|
||||
'PORTAL_EXCLUDE_FORUM_EXP' => 'Wähle "Ja" wenn du die ausgewählten Foren vom Aktuelle Themen-Block ausschließen willst, und "Nein" wenn du nur die Themen aus den ausgewählten Foren im Aktuelle Themen-Block sehen willst.',
|
||||
));
|
||||
@@ -1,42 +0,0 @@
|
||||
<?php
|
||||
/**
|
||||
*
|
||||
* @package Board3 Portal v2 - Search
|
||||
* @copyright (c) Board3 Group ( www.board3.de )
|
||||
* @license http://opensource.org/licenses/gpl-license.php GNU Public License
|
||||
*
|
||||
*/
|
||||
|
||||
/**
|
||||
* DO NOT CHANGE
|
||||
*/
|
||||
if (!defined('IN_PHPBB'))
|
||||
{
|
||||
exit;
|
||||
}
|
||||
|
||||
if (empty($lang) || !is_array($lang))
|
||||
{
|
||||
$lang = array();
|
||||
}
|
||||
|
||||
// DEVELOPERS PLEASE NOTE
|
||||
//
|
||||
// All language files should use UTF-8 as their encoding and the files must not contain a BOM.
|
||||
//
|
||||
// Placeholders can now contain order information, e.g. instead of
|
||||
// 'Page %s of %s' you can (and should) write 'Page %1$s of %2$s', this allows
|
||||
// translators to re-order the output of data while ensuring it remains correct
|
||||
//
|
||||
// You do not need this where single placeholders are used, e.g. 'Message %d' is fine
|
||||
// equally where a string contains only two placeholders which are used to wrap text
|
||||
// in a url you again do not need to specify an order e.g., 'Click %sHERE%s' is fine
|
||||
$lang = array_merge($lang, array(
|
||||
'PORTAL_SEARCH' => 'Suche',
|
||||
'PORTAL_SEARCH_GO' => 'Los',
|
||||
'PORTAL_SEARCH_SITE' => 'Foren',
|
||||
'PORTAL_SEARCH_POSTS' => 'Beiträge',
|
||||
'PORTAL_SEARCH_AUTHOR' => 'Autor',
|
||||
'PORTAL_SEARCH_ENGINE' => 'Suchmaschinen',
|
||||
'PORTAL_SEARCH_ADV' => 'erweiterte Suche',
|
||||
));
|
||||
@@ -1,51 +0,0 @@
|
||||
<?php
|
||||
/**
|
||||
*
|
||||
* @package Board3 Portal v2 - Statistics
|
||||
* @copyright (c) Board3 Group ( www.board3.de )
|
||||
* @license http://opensource.org/licenses/gpl-license.php GNU Public License
|
||||
*
|
||||
*/
|
||||
|
||||
/**
|
||||
* DO NOT CHANGE
|
||||
*/
|
||||
if (!defined('IN_PHPBB'))
|
||||
{
|
||||
exit;
|
||||
}
|
||||
|
||||
if (empty($lang) || !is_array($lang))
|
||||
{
|
||||
$lang = array();
|
||||
}
|
||||
|
||||
// DEVELOPERS PLEASE NOTE
|
||||
//
|
||||
// All language files should use UTF-8 as their encoding and the files must not contain a BOM.
|
||||
//
|
||||
// Placeholders can now contain order information, e.g. instead of
|
||||
// 'Page %s of %s' you can (and should) write 'Page %1$s of %2$s', this allows
|
||||
// translators to re-order the output of data while ensuring it remains correct
|
||||
//
|
||||
// You do not need this where single placeholders are used, e.g. 'Message %d' is fine
|
||||
// equally where a string contains only two placeholders which are used to wrap text
|
||||
// in a url you again do not need to specify an order e.g., 'Click %sHERE%s' is fine
|
||||
$lang = array_merge($lang, array(
|
||||
'ST_TOP' => 'Insgesamt',
|
||||
'ST_TOP_ANNS' => 'Bekanntmachungen insgesamt:',
|
||||
'ST_TOP_STICKYS' => 'Wichtig insgesamt:',
|
||||
'ST_TOT_ATTACH' => 'Dateianhänge insgesamt:',
|
||||
'TOPICS_PER_DAY_OTHER' => 'Themen pro Tag: <strong>%d</strong>',
|
||||
'TOPICS_PER_DAY_ZERO' => 'Themen pro Tag: <strong>0</strong>',
|
||||
'POSTS_PER_DAY_OTHER' => 'Beiträge pro Tag: <strong>%d</strong>',
|
||||
'POSTS_PER_DAY_ZERO' => 'Beiträge pro Tag: <strong>0</strong>',
|
||||
'USERS_PER_DAY_OTHER' => 'Benutzer pro Tag: <strong>%d</strong>',
|
||||
'USERS_PER_DAY_ZERO' => 'Benutzer pro Tag: <strong>0</strong>',
|
||||
'TOPICS_PER_USER_OTHER' => 'Themen pro Benutzer: <strong>%d</strong>',
|
||||
'TOPICS_PER_USER_ZERO' => 'Themen pro Benutzer: <strong>0</strong>',
|
||||
'POSTS_PER_USER_OTHER' => 'Beiträge pro Benutzer: <strong>%d</strong>',
|
||||
'POSTS_PER_USER_ZERO' => 'Beiträge pro Benutzer: <strong>0</strong>',
|
||||
'POSTS_PER_TOPIC_OTHER' => 'Beiträge pro Thema: <strong>%d</strong>',
|
||||
'POSTS_PER_TOPIC_ZERO' => 'Beiträge pro Thema: <strong>0</strong>',
|
||||
));
|
||||
@@ -1,37 +0,0 @@
|
||||
<?php
|
||||
/**
|
||||
*
|
||||
* @package Board3 Portal v2 - Stylechanger
|
||||
* @copyright (c) Board3 Group ( www.board3.de )
|
||||
* @license http://opensource.org/licenses/gpl-license.php GNU Public License
|
||||
*
|
||||
*/
|
||||
|
||||
/**
|
||||
* DO NOT CHANGE
|
||||
*/
|
||||
if (!defined('IN_PHPBB'))
|
||||
{
|
||||
exit;
|
||||
}
|
||||
|
||||
if (empty($lang) || !is_array($lang))
|
||||
{
|
||||
$lang = array();
|
||||
}
|
||||
|
||||
// DEVELOPERS PLEASE NOTE
|
||||
//
|
||||
// All language files should use UTF-8 as their encoding and the files must not contain a BOM.
|
||||
//
|
||||
// Placeholders can now contain order information, e.g. instead of
|
||||
// 'Page %s of %s' you can (and should) write 'Page %1$s of %2$s', this allows
|
||||
// translators to re-order the output of data while ensuring it remains correct
|
||||
//
|
||||
// You do not need this where single placeholders are used, e.g. 'Message %d' is fine
|
||||
// equally where a string contains only two placeholders which are used to wrap text
|
||||
// in a url you again do not need to specify an order e.g., 'Click %sHERE%s' is fine
|
||||
$lang = array_merge($lang, array(
|
||||
'BOARD_STYLE' => 'Mein Board-Style',
|
||||
'STYLE_CHOOSE' => 'Wähle einen Style',
|
||||
));
|
||||
@@ -1,41 +0,0 @@
|
||||
<?php
|
||||
/**
|
||||
*
|
||||
* @package Board3 Portal v2 - Topposters
|
||||
* @copyright (c) Board3 Group ( www.board3.de )
|
||||
* @license http://opensource.org/licenses/gpl-license.php GNU Public License
|
||||
*
|
||||
*/
|
||||
|
||||
/**
|
||||
* DO NOT CHANGE
|
||||
*/
|
||||
if (!defined('IN_PHPBB'))
|
||||
{
|
||||
exit;
|
||||
}
|
||||
|
||||
if (empty($lang) || !is_array($lang))
|
||||
{
|
||||
$lang = array();
|
||||
}
|
||||
|
||||
// DEVELOPERS PLEASE NOTE
|
||||
//
|
||||
// All language files should use UTF-8 as their encoding and the files must not contain a BOM.
|
||||
//
|
||||
// Placeholders can now contain order information, e.g. instead of
|
||||
// 'Page %s of %s' you can (and should) write 'Page %1$s of %2$s', this allows
|
||||
// translators to re-order the output of data while ensuring it remains correct
|
||||
//
|
||||
// You do not need this where single placeholders are used, e.g. 'Message %d' is fine
|
||||
// equally where a string contains only two placeholders which are used to wrap text
|
||||
// in a url you again do not need to specify an order e.g., 'Click %sHERE%s' is fine
|
||||
$lang = array_merge($lang, array(
|
||||
'TOPPOSTERS' => 'Top Poster',
|
||||
'TOPPOSTERS_CONFIG' => 'Einstellungen zu Top Poster',
|
||||
|
||||
// ACP
|
||||
'NUM_TOPPOSTERS' => 'Anzahl der Top Poster',
|
||||
'NUM_TOPPOSTERS_EXP' => 'Gebe die Anzahl der Benutzer an, die im Top Poster Block angezeigt werden sollen.',
|
||||
));
|
||||
@@ -1,45 +0,0 @@
|
||||
<?php
|
||||
/**
|
||||
*
|
||||
* @package Board3 Portal v2 - User Menu
|
||||
* @copyright (c) Board3 Group ( www.board3.de )
|
||||
* @license http://opensource.org/licenses/gpl-license.php GNU Public License
|
||||
*
|
||||
*/
|
||||
|
||||
/**
|
||||
* DO NOT CHANGE
|
||||
*/
|
||||
if (!defined('IN_PHPBB'))
|
||||
{
|
||||
exit;
|
||||
}
|
||||
|
||||
if (empty($lang) || !is_array($lang))
|
||||
{
|
||||
$lang = array();
|
||||
}
|
||||
|
||||
// DEVELOPERS PLEASE NOTE
|
||||
//
|
||||
// All language files should use UTF-8 as their encoding and the files must not contain a BOM.
|
||||
//
|
||||
// Placeholders can now contain order information, e.g. instead of
|
||||
// 'Page %s of %s' you can (and should) write 'Page %1$s of %2$s', this allows
|
||||
// translators to re-order the output of data while ensuring it remains correct
|
||||
//
|
||||
// You do not need this where single placeholders are used, e.g. 'Message %d' is fine
|
||||
// equally where a string contains only two placeholders which are used to wrap text
|
||||
// in a url you again do not need to specify an order e.g., 'Click %sHERE%s' is fine
|
||||
$lang = array_merge($lang, array(
|
||||
'USER_MENU' => 'Benutzer-Menü',
|
||||
'UM_LOG_ME_IN' => 'Mich bei jedem Besuch automatisch anmelden',
|
||||
'UM_HIDE_ME' => 'Meinen Online-Status während dieser Sitzung verbergen',
|
||||
'UM_REGISTER_NOW' => 'Registriere dich jetzt!',
|
||||
'UM_MAIN_SUBSCRIBED' => 'Benachrichtigungen verwalten',
|
||||
'UM_BOOKMARKS' => 'Lesezeichen verwalten',
|
||||
'M_MENU' => 'Menü',
|
||||
'M_ACP' => 'Administrations-Bereich',
|
||||
'USER_MENU_SETTINGS' => 'Benutzer-Menü Einstellungen',
|
||||
'USER_MENU_REGISTER' => 'Zeige Registrierungs-Link in Benutzer-Menü',
|
||||
));
|
||||
@@ -1,43 +0,0 @@
|
||||
<?php
|
||||
/**
|
||||
*
|
||||
* @package Board3 Portal v2 - Welcome
|
||||
* @copyright (c) Board3 Group ( www.board3.de )
|
||||
* @license http://opensource.org/licenses/gpl-license.php GNU Public License
|
||||
*
|
||||
*/
|
||||
|
||||
/**
|
||||
* DO NOT CHANGE
|
||||
*/
|
||||
if (!defined('IN_PHPBB'))
|
||||
{
|
||||
exit;
|
||||
}
|
||||
|
||||
if (empty($lang) || !is_array($lang))
|
||||
{
|
||||
$lang = array();
|
||||
}
|
||||
|
||||
// DEVELOPERS PLEASE NOTE
|
||||
//
|
||||
// All language files should use UTF-8 as their encoding and the files must not contain a BOM.
|
||||
//
|
||||
// Placeholders can now contain order information, e.g. instead of
|
||||
// 'Page %s of %s' you can (and should) write 'Page %1$s of %2$s', this allows
|
||||
// translators to re-order the output of data while ensuring it remains correct
|
||||
//
|
||||
// You do not need this where single placeholders are used, e.g. 'Message %d' is fine
|
||||
// equally where a string contains only two placeholders which are used to wrap text
|
||||
// in a url you again do not need to specify an order e.g., 'Click %sHERE%s' is fine
|
||||
$lang = array_merge($lang, array(
|
||||
'PORTAL_WELCOME' => 'Willkommen',
|
||||
|
||||
// ACP
|
||||
'ACP_PORTAL_WELCOME_SETTINGS' => 'Einstellungen für die Willkommens-Nachricht',
|
||||
'ACP_PORTAL_WELCOME_MESSAGE_SHORT' => 'Die eingegebene Nachricht ist nicht lang genug.',
|
||||
'ACP_PORTAL_WELCOME_PREVIEW' => 'Willkommens-Nachricht Vorschau',
|
||||
'ACP_PORTAL_WELCOME_MESSAGE' => 'Willkommens-Nachricht',
|
||||
'ACP_PORTAL_WELCOME_MESSAGE_EXP' => 'Du kannst die Willkommens-Nachricht in der Textbox verändern. BBCode, Bilder und Links sind erlaubt.',
|
||||
));
|
||||
@@ -1,36 +0,0 @@
|
||||
<?php
|
||||
/**
|
||||
*
|
||||
* @package Board3 Portal v2 - Who is online
|
||||
* @copyright (c) Board3 Group ( www.board3.de )
|
||||
* @license http://opensource.org/licenses/gpl-license.php GNU Public License
|
||||
*
|
||||
*/
|
||||
|
||||
/**
|
||||
* DO NOT CHANGE
|
||||
*/
|
||||
if (!defined('IN_PHPBB'))
|
||||
{
|
||||
exit;
|
||||
}
|
||||
|
||||
if (empty($lang) || !is_array($lang))
|
||||
{
|
||||
$lang = array();
|
||||
}
|
||||
|
||||
// DEVELOPERS PLEASE NOTE
|
||||
//
|
||||
// All language files should use UTF-8 as their encoding and the files must not contain a BOM.
|
||||
//
|
||||
// Placeholders can now contain order information, e.g. instead of
|
||||
// 'Page %s of %s' you can (and should) write 'Page %1$s of %2$s', this allows
|
||||
// translators to re-order the output of data while ensuring it remains correct
|
||||
//
|
||||
// You do not need this where single placeholders are used, e.g. 'Message %d' is fine
|
||||
// equally where a string contains only two placeholders which are used to wrap text
|
||||
// in a url you again do not need to specify an order e.g., 'Click %sHERE%s' is fine
|
||||
$lang = array_merge($lang, array(
|
||||
'PORTAL_WHOIS_ONLINE' => 'Wer ist online?',
|
||||
));
|
||||
@@ -1,151 +0,0 @@
|
||||
<?php
|
||||
/**
|
||||
*
|
||||
* @package Board3 Portal v2
|
||||
* @copyright (c) Board3 Group ( www.board3.de )
|
||||
* @license http://opensource.org/licenses/gpl-license.php GNU Public License
|
||||
*
|
||||
*/
|
||||
|
||||
/**
|
||||
* DO NOT CHANGE
|
||||
*/
|
||||
if (!defined('IN_PHPBB'))
|
||||
{
|
||||
exit;
|
||||
}
|
||||
|
||||
if (empty($lang) || !is_array($lang))
|
||||
{
|
||||
$lang = array();
|
||||
}
|
||||
|
||||
// DEVELOPERS PLEASE NOTE
|
||||
//
|
||||
// All language files should use UTF-8 as their encoding and the files must not contain a BOM.
|
||||
//
|
||||
// Placeholders can now contain order information, e.g. instead of
|
||||
// 'Page %s of %s' you can (and should) write 'Page %1$s of %2$s', this allows
|
||||
// translators to re-order the output of data while ensuring it remains correct
|
||||
//
|
||||
// You do not need this where single placeholders are used, e.g. 'Message %d' is fine
|
||||
// equally where a string contains only two placeholders which are used to wrap text
|
||||
// in a url you again do not need to specify an order e.g., 'Click %sHERE%s' is fine
|
||||
|
||||
$lang = array_merge($lang, array(
|
||||
// Portal Modules
|
||||
'ACP_PORTAL_MODULES' => 'Portal Modules',
|
||||
'ACP_PORTAL_MODULES_EXP' => 'You can manage your portal modules here. If you turn off all modules, please also disable the Portal.',
|
||||
|
||||
'MODULE_POS_TOP' => 'Top',
|
||||
'MODULE_POS_LEFT' => 'Left column',
|
||||
'MODULE_POS_RIGHT' => 'Right column',
|
||||
'MODULE_POS_CENTER' => 'Center column',
|
||||
'MODULE_POS_BOTTOM' => 'Bottom',
|
||||
'ADD_MODULE' => 'Add module',
|
||||
'CHOOSE_MODULE' => 'Choose module',
|
||||
'CHOOSE_MODULE_EXP' => 'Choose a module from the drop-down list',
|
||||
'SUCCESS_ADD' => 'The module was added successfully.',
|
||||
'SUCCESS_DELETE' => 'The module was removed successfully.',
|
||||
'NO_MODULES' => 'No modules have been detected.',
|
||||
'MOVE_RIGHT' => 'Move right',
|
||||
'MOVE_LEFT' => 'Move left',
|
||||
'B3P_FILE_NOT_FOUND' => 'The requested file could not be found',
|
||||
'UNABLE_TO_MOVE' => 'It is not possible to move the block to the selected column.',
|
||||
'UNABLE_TO_MOVE_ROW' => 'It is not possible to move the block to the selected row.',
|
||||
'DELETE_MODULE_CONFIRM' => 'Are you sure you wish to delete the module "%1$s"?',
|
||||
'MODULE_RESET_SUCCESS' => 'Successfully reset the module settings.',
|
||||
'MODULE_RESET_CONFIRM' => 'Are you sure you wish to reset the settings of the module "%1$s"?',
|
||||
'MODULE_NOT_EXISTS' => 'The selected module does not exist.',
|
||||
|
||||
'MODULE_OPTIONS' => 'Module options',
|
||||
'MODULE_NAME' => 'Module name',
|
||||
'MODULE_NAME_EXP' => 'Enter the name of the Module that should be displayed in the Module configuration.',
|
||||
'MODULE_IMAGE' => 'Module image',
|
||||
'MODULE_IMAGE_EXP' => 'Enter the filename of the module image. Images need to be in all styles/{yourstyle}/theme/images/portal/ folders',
|
||||
'MODULE_PERMISSIONS' => 'Module permissions',
|
||||
'MODULE_PERMISSIONS_EXP' => 'Select the groups that should be authorized to view the module. If you want all users to be able to view the module, don’t select anything.<br />Select/Deselect multiple groups by holding <samp>CTRL</samp> and clicking.',
|
||||
'MODULE_IMAGE_WIDTH' => 'Module image width',
|
||||
'MODULE_IMAGE_WIDTH_EXP' => 'Enter the width of the module image in pixels',
|
||||
'MODULE_IMAGE_HEIGHT' => 'Module image height',
|
||||
'MODULE_IMAGE_HEIGHT_EXP' => 'Enter the height of the module image in pixels',
|
||||
'MODULE_RESET' => 'Reset module configuration',
|
||||
'MODULE_RESET_EXP' => 'This will reset all settings to the default!',
|
||||
'MODULE_STATUS' => 'Enable module',
|
||||
'MODULE_ADD_ONCE' => 'This module can only be added once.',
|
||||
'MODULE_IMAGE_ERROR' => 'There was an error while checking for the module image:',
|
||||
|
||||
// general
|
||||
'ACP_PORTAL' => 'Portal',
|
||||
'ACP_PORTAL_GENERAL_INFO' => 'General settings',
|
||||
'ACP_PORTAL_CONFIG_INFO' => 'General settings',
|
||||
'ACP_PORTAL_GENERAL_TITLE' => 'Portal Administration',
|
||||
'ACP_PORTAL_GENERAL_TITLE_EXP' => 'Thank you for choosing Board3 Portal! This is where you can manage your portal page. The options below let you customize the various general settings.',
|
||||
'PORTAL_ENABLE' => 'Enable Portal',
|
||||
'PORTAL_ENABLE_EXP' => 'Turns the whole portal on or off',
|
||||
'PORTAL_LEFT_COLUMN' => 'Enable left column',
|
||||
'PORTAL_LEFT_COLUMN_EXP' => 'Switch to no if you wish to turn off the left column',
|
||||
'PORTAL_RIGHT_COLUMN' => 'Enable right column',
|
||||
'PORTAL_RIGHT_COLUMN_EXP' => 'Switch to no if you wish to turn off the right column',
|
||||
'PORTAL_VERSION_CHECK' => 'Versioncheck on Portal',
|
||||
'PORTAL_PHPBB_MENU' => 'phpBB menu',
|
||||
'PORTAL_PHPBB_MENU_EXP' => 'Display the phpBB Header on the portal.',
|
||||
'PORTAL_DISPLAY_JUMPBOX' => 'Display jumpbox',
|
||||
'PORTAL_DISPLAY_JUMPBOX_EXP' => 'Display the jumpbox on the portal. The jumpbox will only be displayed if it is also enabled in the board features.',
|
||||
'ACP_PORTAL_COLUMN_WIDTH_SETTINGS' => 'Left and right column width settings',
|
||||
'PORTAL_LEFT_COLUMN_WIDTH' => 'Width of the left column',
|
||||
'PORTAL_LEFT_COLUMN_WIDTH_EXP' => 'Change the width of the left column in pixels; recommended value is 180',
|
||||
'PORTAL_RIGHT_COLUMN_WIDTH' => 'Width of the right column',
|
||||
'PORTAL_RIGHT_COLUMN_WIDTH_EXP' => 'Change the width of the right column in pixels; recommended value is 180',
|
||||
|
||||
'LINK_ADDED' => 'The link has been successfully added',
|
||||
'LINK_UPDATED' => 'The link has been successfully updated',
|
||||
'LOG_PORTAL_LINK_ADDED' => '<strong>Altered Portal settings</strong><br />» Link added: %s ',
|
||||
'LOG_PORTAL_LINK_UPDATED' => '<strong>Altered Portal settings</strong><br />» Link updated: %s ',
|
||||
'LOG_PORTAL_LINK_REMOVED' => '<strong>Altered Portal settings</strong><br />» Link removed: %s ',
|
||||
'LOG_PORTAL_EVENT_ADDED' => '<strong>Altered Portal settings</strong><br />» Event added: %s ',
|
||||
'LOG_PORTAL_EVENT_UPDATED' => '<strong>Altered Portal settings</strong><br />» Event updated: %s ',
|
||||
'LOG_PORTAL_EVENT_REMOVED' => '<strong>Altered Portal settings</strong><br />» Event removed: %s ',
|
||||
|
||||
// Upload Module
|
||||
'ACP_PORTAL_UPLOAD' => 'Upload module',
|
||||
'MODULE_UPLOAD' => 'Upload a module',
|
||||
'MODULE_UPLOAD_EXP' => 'Choose the zip file of the module you want to upload:',
|
||||
'MODULE_UPLOAD_GO' => 'Upload',
|
||||
'NO_MODULE_UPLOAD' => 'Your server configuration does not allow file uploads.',
|
||||
'NO_FILE_B3P' => 'No zip file specified.',
|
||||
'MODULE_UPLOADED' => 'Module uploaded successfully.',
|
||||
'MODULE_UPLOAD_MKDIR_FAILURE' => 'Unable to create a folder.',
|
||||
'MODULE_COPY_FAILURE' => 'Unable to copy the following file: %1$s',
|
||||
'MODULE_CORRUPTED' => 'The module you are trying to upload seems to be corrupted.',
|
||||
'PORTAL_NEW_FILES' => 'New files',
|
||||
'PORTAL_MODULE_SOURCE' => 'Source',
|
||||
'PORTAL_MODULE_TARGET' => 'Target',
|
||||
'PORTAL_MODULE_STATUS' => 'Status',
|
||||
'PORTAL_MODULE_SUCCESS' => 'Success',
|
||||
'PORTAL_MODULE_ERROR' => 'Error',
|
||||
|
||||
// Install
|
||||
'PORTAL_BASIC_INSTALL' => 'Adding basic set of modules',
|
||||
'PORTAL_BASIC_UNINSTALL' => 'Removing modules from database',
|
||||
|
||||
// Logs
|
||||
'LOG_PORTAL_CONFIG' => '<strong>Altered Portal settings</strong><br />» %s',
|
||||
|
||||
/**
|
||||
* A copy of Handyman` s MOD version check, to view it on the portal overview
|
||||
*/
|
||||
'ANNOUNCEMENT_TOPIC' => 'Release Announcement',
|
||||
'CURRENT_VERSION' => 'Current Version',
|
||||
'DOWNLOAD_LATEST' => 'Download Latest Version',
|
||||
'LATEST_VERSION' => 'Latest Version',
|
||||
'NO_INFO' => 'Version server could not be contacted',
|
||||
'NOT_UP_TO_DATE' => '%s is not up to date',
|
||||
'RELEASE_ANNOUNCEMENT' => 'Annoucement Topic',
|
||||
'UP_TO_DATE' => '%s is up to date',
|
||||
'VERSION_CHECK' => 'MOD Version Check',
|
||||
|
||||
// Adding the permissions
|
||||
'acl_a_manage_portal' => array('lang' => 'Can alter Portal settings', 'cat' => 'misc'),
|
||||
'acl_u_view_portal' => array('lang' => 'Can view the Portal', 'cat' => 'misc'),
|
||||
));
|
||||
@@ -1,40 +0,0 @@
|
||||
<?php
|
||||
/**
|
||||
*
|
||||
* @package Board3 Portal v2
|
||||
* @copyright (c) Board3 Group ( www.board3.de )
|
||||
* @license http://opensource.org/licenses/gpl-license.php GNU Public License
|
||||
*
|
||||
*/
|
||||
|
||||
/**
|
||||
* DO NOT CHANGE
|
||||
*/
|
||||
if (!defined('IN_PHPBB'))
|
||||
{
|
||||
exit;
|
||||
}
|
||||
|
||||
if (empty($lang) || !is_array($lang))
|
||||
{
|
||||
$lang = array();
|
||||
}
|
||||
|
||||
// DEVELOPERS PLEASE NOTE
|
||||
//
|
||||
// All language files should use UTF-8 as their encoding and the files must not contain a BOM.
|
||||
//
|
||||
// Placeholders can now contain order information, e.g. instead of
|
||||
// 'Page %s of %s' you can (and should) write 'Page %1$s of %2$s', this allows
|
||||
// translators to re-order the output of data while ensuring it remains correct
|
||||
//
|
||||
// You do not need this where single placeholders are used, e.g. 'Message %d' is fine
|
||||
// equally where a string contains only two placeholders which are used to wrap text
|
||||
// in a url you again do not need to specify an order e.g., 'Click %sHERE%s' is fine
|
||||
|
||||
// Common
|
||||
$lang = array_merge($lang, array(
|
||||
'PORTAL' => 'Portal',
|
||||
'VIEWING_PORTAL' => 'Portal page',
|
||||
'BACK' => 'Back',
|
||||
));
|
||||
@@ -1,74 +0,0 @@
|
||||
<?php
|
||||
/**
|
||||
*
|
||||
* @package Board3 Portal v2 - Announcements
|
||||
* @copyright (c) Board3 Group ( www.board3.de )
|
||||
* @license http://opensource.org/licenses/gpl-license.php GNU Public License
|
||||
*
|
||||
*/
|
||||
|
||||
/**
|
||||
* DO NOT CHANGE
|
||||
*/
|
||||
if (!defined('IN_PHPBB'))
|
||||
{
|
||||
exit;
|
||||
}
|
||||
|
||||
if (empty($lang) || !is_array($lang))
|
||||
{
|
||||
$lang = array();
|
||||
}
|
||||
|
||||
// DEVELOPERS PLEASE NOTE
|
||||
//
|
||||
// All language files should use UTF-8 as their encoding and the files must not contain a BOM.
|
||||
//
|
||||
// Placeholders can now contain order information, e.g. instead of
|
||||
// 'Page %s of %s' you can (and should) write 'Page %1$s of %2$s', this allows
|
||||
// translators to re-order the output of data while ensuring it remains correct
|
||||
//
|
||||
// You do not need this where single placeholders are used, e.g. 'Message %d' is fine
|
||||
// equally where a string contains only two placeholders which are used to wrap text
|
||||
// in a url you again do not need to specify an order e.g., 'Click %sHERE%s' is fine
|
||||
$lang = array_merge($lang, array(
|
||||
'LATEST_ANNOUNCEMENTS' => 'Latest global announcements',
|
||||
'GLOBAL_ANNOUNCEMENTS' => 'Global announcements',
|
||||
'GLOBAL_ANNOUNCEMENT' => 'Global announcement',
|
||||
'VIEW_LATEST_ANNOUNCEMENT' => '1 announcement',
|
||||
'VIEW_LATEST_ANNOUNCEMENTS' => '%d announcements',
|
||||
'READ_FULL' => 'Read all',
|
||||
'NO_ANNOUNCEMENTS' => 'No global announcements',
|
||||
'POSTED_BY' => 'Poster',
|
||||
'COMMENTS' => 'Comments',
|
||||
'VIEW_COMMENTS' => 'View comments',
|
||||
'PORTAL_POST_REPLY' => 'Write comments',
|
||||
'TOPIC_VIEWS' => 'Views',
|
||||
'JUMP_NEWEST' => 'Jump to newest post',
|
||||
'JUMP_FIRST' => 'Jump to first post',
|
||||
'JUMP_TO_POST' => 'Jump to post',
|
||||
|
||||
// ACP
|
||||
'ACP_PORTAL_ANNOUNCE_SETTINGS' => 'Global announcements settings',
|
||||
'ACP_PORTAL_ANNOUNCE_SETTINGS_EXP' => 'This is where you customize the global announcements block.',
|
||||
'PORTAL_ANNOUNCEMENTS' => 'Display global announcements',
|
||||
'PORTAL_ANNOUNCEMENTS_EXP' => 'Display this block on the portal.',
|
||||
'PORTAL_ANNOUNCEMENTS_STYLE' => 'Compact global announcements block style',
|
||||
'PORTAL_ANNOUNCEMENTS_STYLE_EXP' => '"Yes" means use the compact style for for global announcements. "No" means use the large style (text view).',
|
||||
'PORTAL_NUMBER_OF_ANNOUNCEMENTS' => 'Number of announcements on the portal',
|
||||
'PORTAL_NUMBER_OF_ANNOUNCEMENTS_EXP' => '0 means infinite',
|
||||
'PORTAL_ANNOUNCEMENTS_DAY' => 'Number of days to display the announcement',
|
||||
'PORTAL_ANNOUNCEMENTS_DAY_EXP' => '0 means infinite',
|
||||
'PORTAL_ANNOUNCEMENTS_LENGTH' => 'Maximum size/length of global announcements',
|
||||
'PORTAL_ANNOUNCEMENTS_LENGTH_EXP' => '0 means infinite',
|
||||
'PORTAL_GLOBAL_ANNOUNCEMENTS_FORUM' => 'Announcements forums',
|
||||
'PORTAL_GLOBAL_ANNOUNCEMENTS_FORUM_EXP' => 'Forum(s) from which we retrieve the announcements. Leave this blank to retrieve announcements from all the forums. If "Exclude forums" is set to "Yes", select the forums you want to exclude.<br />If "Exclude forums" is set to "No" select the forums you want to see.<br />Select/Deselect multiple forums by holding <samp>CTRL</samp> and clicking.',
|
||||
'PORTAL_ANNOUNCEMENTS_FORUM_EXCLUDE' => 'Exclude forums',
|
||||
'PORTAL_ANNOUNCEMENTS_FORUM_EXCLUDE_EXP'=> 'Select "Yes" if you want to exlude the selected forums from the announcements block, and "No" if you want to see only the selected forums in the announcements block.',
|
||||
'PORTAL_ANNOUNCEMENTS_PERMISSIONS' => 'Enable/disable permissions',
|
||||
'PORTAL_ANNOUNCEMENTS_PERMISSIONS_EXP' => 'When displaying announcements, consider a user's forum-viewing permissions.',
|
||||
'PORTAL_ANNOUNCEMENTS_ARCHIVE' => 'Enable the announcements archive system',
|
||||
'PORTAL_ANNOUNCEMENTS_ARCHIVE_EXP' => 'If enabled the announcements archive system / page numbers will be displayed.',
|
||||
'PORTAL_SHOW_REPLIES_VIEWS' => 'Display the number of replies and views',
|
||||
'PORTAL_SHOW_REPLIES_VIEWS_EXP' => 'This setting pertains to the compact block.<br />When Yes, the number of replies and views are shown in 2 extra columns. When No, replies and views will be shown beside the forum name. Select No if you have problems with the display of the extra columns due to the extra width required.',
|
||||
));
|
||||
@@ -1,54 +0,0 @@
|
||||
<?php
|
||||
/**
|
||||
*
|
||||
* @package Board3 Portal v2 - Attachments
|
||||
* @copyright (c) Board3 Group ( www.board3.de )
|
||||
* @license http://opensource.org/licenses/gpl-license.php GNU Public License
|
||||
*
|
||||
*/
|
||||
|
||||
/**
|
||||
* DO NOT CHANGE
|
||||
*/
|
||||
if (!defined('IN_PHPBB'))
|
||||
{
|
||||
exit;
|
||||
}
|
||||
|
||||
if (empty($lang) || !is_array($lang))
|
||||
{
|
||||
$lang = array();
|
||||
}
|
||||
|
||||
// DEVELOPERS PLEASE NOTE
|
||||
//
|
||||
// All language files should use UTF-8 as their encoding and the files must not contain a BOM.
|
||||
//
|
||||
// Placeholders can now contain order information, e.g. instead of
|
||||
// 'Page %s of %s' you can (and should) write 'Page %1$s of %2$s', this allows
|
||||
// translators to re-order the output of data while ensuring it remains correct
|
||||
//
|
||||
// You do not need this where single placeholders are used, e.g. 'Message %d' is fine
|
||||
// equally where a string contains only two placeholders which are used to wrap text
|
||||
// in a url you again do not need to specify an order e.g., 'Click %sHERE%s' is fine
|
||||
$lang = array_merge($lang, array(
|
||||
'DOWNLOADS' => 'Downloads',
|
||||
'NO_ATTACHMENTS' => 'No attachments',
|
||||
'PORTAL_ATTACHMENTS' => 'Attachments',
|
||||
|
||||
// ACP
|
||||
'ACP_PORTAL_ATTACHMENTS_NUMBER_SETTINGS' => 'Attachments settings',
|
||||
'ACP_PORTAL_ATTACHMENTS_NUMBER_SETTINGS_EXP' => 'This is where you customize the attachments block.',
|
||||
'PORTAL_ATTACHMENTS_NUMBER' => 'Limit of displayed attachments',
|
||||
'PORTAL_ATTACHMENTS_NUMBER_EXP' => '0 means infinite',
|
||||
'PORTAL_ATTACHMENTS_FORUM_IDS' => 'Attachments forums',
|
||||
'PORTAL_ATTACHMENTS_FORUM_IDS_EXP' => 'The forum(s) from which the attachments should be displayed. If "Exclude forums" is set to "Yes", select the forums you want to exclude.<br />If "Exclude forums" is set to "No" select the forums you want to see.<br />Select/Deselect multiple forums by holding <samp>CTRL</samp> and clicking.',
|
||||
'PORTAL_ATTACHMENTS_FORUM_EXCLUDE' => 'Exclude forums',
|
||||
'PORTAL_ATTACHMENTS_FORUM_EXCLUDE_EXP' => 'Select "Yes" if you want to exlude the selected forums from the attachments block, and "No" if you want to see only the attachments of the selected forums in the attachments block.',
|
||||
'PORTAL_ATTACHMENTS_MAX_LENGTH' => 'Character limit for each attachments',
|
||||
'PORTAL_ATTACHMENTS_MAX_LENGTH_EXP' => '0 means infinite',
|
||||
'PORTAL_ATTACHMENTS_FILETYPE' => 'Filetypes',
|
||||
'PORTAL_ATTACHMENTS_FILETYPE_EXP' => 'If "Exclude filetypes" is set to "Yes", select the filetypes you want to exclude.<br />If "Exclude filetypes" is set to "No" select the filetypes you want to see.<br />Select/Deselect multiple filetypes by holding <samp>CTRL</samp> and clicking.',
|
||||
'PORTAL_ATTACHMENTS_EXCLUDE' => 'Exclude filetypes',
|
||||
'PORTAL_ATTACHMENTS_EXCLUDE_EXP' => 'Select "Yes" if you want to exlude the selected filetypes from the attachments block, and "No" if you want to see only the selected filetypes in the attachments block.',
|
||||
));
|
||||
@@ -1,44 +0,0 @@
|
||||
<?php
|
||||
/**
|
||||
*
|
||||
* @package Board3 Portal v2 - Birthday List
|
||||
* @copyright (c) Board3 Group ( www.board3.de )
|
||||
* @license http://opensource.org/licenses/gpl-license.php GNU Public License
|
||||
*
|
||||
*/
|
||||
|
||||
/**
|
||||
* DO NOT CHANGE
|
||||
*/
|
||||
if (!defined('IN_PHPBB'))
|
||||
{
|
||||
exit;
|
||||
}
|
||||
|
||||
if (empty($lang) || !is_array($lang))
|
||||
{
|
||||
$lang = array();
|
||||
}
|
||||
|
||||
// DEVELOPERS PLEASE NOTE
|
||||
//
|
||||
// All language files should use UTF-8 as their encoding and the files must not contain a BOM.
|
||||
//
|
||||
// Placeholders can now contain order information, e.g. instead of
|
||||
// 'Page %s of %s' you can (and should) write 'Page %1$s of %2$s', this allows
|
||||
// translators to re-order the output of data while ensuring it remains correct
|
||||
//
|
||||
// You do not need this where single placeholders are used, e.g. 'Message %d' is fine
|
||||
// equally where a string contains only two placeholders which are used to wrap text
|
||||
// in a url you again do not need to specify an order e.g., 'Click %sHERE%s' is fine
|
||||
$lang = array_merge($lang, array(
|
||||
'BIRTHDAYS_AHEAD' => 'In the next %s days',
|
||||
'NO_BIRTHDAYS_AHEAD' => 'No members have a birthday within this period of time.',
|
||||
|
||||
// ACP
|
||||
'ACP_PORTAL_BIRTHDAYS_SETTINGS' => 'Birthdays Settings',
|
||||
'ACP_PORTAL_BIRTHDAYS_SETTINGS_EXP' => 'This is where you customize the birthday block.',
|
||||
'PORTAL_BIRTHDAYS' => 'Birthday block',
|
||||
'PORTAL_BIRTHDAYS_AHEAD' => 'Birthdays ahead days',
|
||||
'PORTAL_BIRTHDAYS_AHEAD_EXP' => 'How many days to look ahead for future birthdays.<br />"0" will disable the ahead birthdays list.',
|
||||
));
|
||||
@@ -1,135 +0,0 @@
|
||||
<?php
|
||||
/**
|
||||
*
|
||||
* @package Board3 Portal v2 - Calendar
|
||||
* @copyright (c) Board3 Group ( www.board3.de )
|
||||
* @license http://opensource.org/licenses/gpl-license.php GNU Public License
|
||||
*
|
||||
*/
|
||||
|
||||
/**
|
||||
* DO NOT CHANGE
|
||||
*/
|
||||
if (!defined('IN_PHPBB'))
|
||||
{
|
||||
exit;
|
||||
}
|
||||
|
||||
if (empty($lang) || !is_array($lang))
|
||||
{
|
||||
$lang = array();
|
||||
}
|
||||
|
||||
// DEVELOPERS PLEASE NOTE
|
||||
//
|
||||
// All language files should use UTF-8 as their encoding and the files must not contain a BOM.
|
||||
//
|
||||
// Placeholders can now contain order information, e.g. instead of
|
||||
// 'Page %s of %s' you can (and should) write 'Page %1$s of %2$s', this allows
|
||||
// translators to re-order the output of data while ensuring it remains correct
|
||||
//
|
||||
// You do not need this where single placeholders are used, e.g. 'Message %d' is fine
|
||||
// equally where a string contains only two placeholders which are used to wrap text
|
||||
// in a url you again do not need to specify an order e.g., 'Click %sHERE%s' is fine
|
||||
$lang = array_merge($lang, array(
|
||||
'PORTAL_CALENDAR' => 'Calendar',
|
||||
'VIEW_NEXT_MONTH' => 'next month',
|
||||
'VIEW_PREVIOUS_MONTH' => 'Previous month',
|
||||
'EVENT_START' => 'From',
|
||||
'EVENT_END' => 'To',
|
||||
'EVENT_TIME' => 'Time',
|
||||
'EVENT_ALL_DAY' => 'All Day Event',
|
||||
'CURRENT_EVENTS' => 'Current Events',
|
||||
'NO_CUR_EVENTS' => 'No current events',
|
||||
'UPCOMING_EVENTS' => 'Upcoming Events',
|
||||
'NO_UPCOMING_EVENTS' => 'No upcoming events',
|
||||
|
||||
'mini_cal' => array(
|
||||
'day' => array(
|
||||
'1' => 'Su',
|
||||
'2' => 'Mo',
|
||||
'3' => 'Tu',
|
||||
'4' => 'We',
|
||||
'5' => 'Th',
|
||||
'6' => 'Fr',
|
||||
'7' => 'Sa',
|
||||
),
|
||||
|
||||
'month' => array(
|
||||
'1' => 'Jan.',
|
||||
'2' => 'Feb.',
|
||||
'3' => 'Mar.',
|
||||
'4' => 'Apr.',
|
||||
'5' => 'May',
|
||||
'6' => 'Jun.',
|
||||
'7' => 'Jul.',
|
||||
'8' => 'Aug.',
|
||||
'9' => 'Sep.',
|
||||
'10'=> 'Oct.',
|
||||
'11'=> 'Nov.',
|
||||
'12'=> 'Dec.',
|
||||
),
|
||||
|
||||
'long_month'=> array(
|
||||
'1' => 'January',
|
||||
'2' => 'February',
|
||||
'3' => 'March',
|
||||
'4' => 'April',
|
||||
'5' => 'May',
|
||||
'6' => 'June',
|
||||
'7' => 'July',
|
||||
'8' => 'August',
|
||||
'9' => 'September',
|
||||
'10'=> 'October',
|
||||
'11'=> 'November',
|
||||
'12'=> 'December',
|
||||
),
|
||||
),
|
||||
|
||||
// ACP
|
||||
'ACP_PORTAL_CALENDAR' => 'Calendar settings',
|
||||
'ACP_PORTAL_CALENDAR_EXP' => 'This is where you customize the calendar block.',
|
||||
'ACP_PORTAL_EVENTS' => 'Calendar events',
|
||||
'PORTAL_CALENDAR_TODAY_COLOR' => 'Active day color',
|
||||
'PORTAL_CALENDAR_TODAY_COLOR_EXP' => 'HEX or named colors are allowed such as #FFFFFF for white, or color names like violet.',
|
||||
'PORTAL_CALENDAR_SUNDAY_COLOR' => 'Color for sunday',
|
||||
'PORTAL_CALENDAR_SUNDAY_COLOR_EXP' => 'HEX or named colors are allowed such as #FFFFFF for white, or color names like violet.',
|
||||
'PORTAL_LONG_MONTH' => 'Show full month names',
|
||||
'PORTAL_LONG_MONTH_EXP' => 'If disabled the months will be shortened e.g. Aug. instead of August.',
|
||||
'PORTAL_SUNDAY_FIRST' => 'First day of the week',
|
||||
'PORTAL_SUNDAY_FIRST_EXP' => 'If disabled the calendar will show Mo. --> Su., else Su. --> Sa.',
|
||||
'PORTAL_DISPLAY_EVENTS' => 'Display events',
|
||||
'PORTAL_DISPLAY_EVENTS_EXP' => 'Display events that have been created in the calendar block',
|
||||
'PORTAL_EVENTS_MANAGE' => 'Manage events',
|
||||
'NO_EVENT_TITLE' => 'You haven’t specified a title for the event.',
|
||||
'NO_EVENT_START' => 'You haven’t specified a start time for the event.',
|
||||
'ADD_EVENT' => 'Add new event',
|
||||
'EVENT_UPDATED' => 'Event updated successfully.',
|
||||
'EVENT_ADDED' => 'Event added successfully.',
|
||||
'NO_EVENT' => 'No event specified.',
|
||||
'EVENT_TITLE' => 'Event title',
|
||||
'EVENT_DESC' => 'Event description',
|
||||
'EVENT_LINK' => 'Event link',
|
||||
'EVENT_LINK_EXP' => 'Enter the link to a topic or website with the announcement or discussion topic of the event.',
|
||||
'NO_EVENTS' => 'No events',
|
||||
'ACP_PORTAL_CALENDAR_START_INCORRECT' => 'The start time you entered was incorrect. Please follow the instructions carefully.',
|
||||
'ACP_PORTAL_CALENDAR_END_INCORRECT' => 'The end time you entered was incorrect. Please follow the instructions carefully.',
|
||||
'ACP_PORTAL_CALENDAR_EVENT_PAST' => 'The event start time needs to be in the future.',
|
||||
'ACP_PORTAL_EVENT_START_DAY' => 'Event start date',
|
||||
'ACP_PORTAL_EVENT_START_DAY_EXP' => 'Enter the date when the event starts. The date has to be in this format: DD-MM-YYYY',
|
||||
'ACP_PORTAL_EVENT_START_TIME' => 'Event start time',
|
||||
'ACP_PORTAL_EVENT_START_TIME_EXP' => 'Enter the time when the event starts. The time has to be in a 24 hour format, i.e. 23:12',
|
||||
'ACP_PORTAL_EVENT_END_DAY' => 'Event end date',
|
||||
'ACP_PORTAL_EVENT_END_DAY_EXP' => 'Enter the date when the event ends. The date has to be in this format: DD-MM-YYYY',
|
||||
'ACP_PORTAL_EVENT_END_TIME' => 'Event end time',
|
||||
'ACP_PORTAL_EVENT_END_TIME_EXP' => 'Enter the time when the event ends. The time has to be in a 24 hour format, i.e. 23:12',
|
||||
'ACP_PORTAL_CALENDAR_EVENT_START_FIRST' => 'The end of the event has to be after the start of the event.',
|
||||
'ACP_PORTAL_CALENDAR_PERMISSION' => 'Event permissions',
|
||||
'ACP_PORTAL_CALENDAR_PERMISSION_EXP' => 'Select the groups that should be authorized to view the event. If you want all users to be able to view the event, don’t select anything.<br />Select/Deselect multiple groups by holding <samp>CTRL</samp> and clicking.',
|
||||
'PORTAL_EVENTS_URL_NEW_WINDOW' => 'Open external event links in a new window',
|
||||
|
||||
// Logs
|
||||
'LOG_PORTAL_EVENT_UPDATED' => '<strong>Updated Event</strong><br />» %s',
|
||||
'LOG_PORTAL_EVENT_ADDED' => '<strong>Added Event</strong><br />» %s',
|
||||
'LOG_PORTAL_EVENT_REMOVED' => '<strong>Removed Event</strong><br />» %s',
|
||||
));
|
||||
@@ -1,42 +0,0 @@
|
||||
<?php
|
||||
/**
|
||||
*
|
||||
* @package Board3 Portal v2 - Clock
|
||||
* @copyright (c) Board3 Group ( www.board3.de )
|
||||
* @license http://opensource.org/licenses/gpl-license.php GNU Public License
|
||||
*
|
||||
*/
|
||||
|
||||
/**
|
||||
* DO NOT CHANGE
|
||||
*/
|
||||
if (!defined('IN_PHPBB'))
|
||||
{
|
||||
exit;
|
||||
}
|
||||
|
||||
if (empty($lang) || !is_array($lang))
|
||||
{
|
||||
$lang = array();
|
||||
}
|
||||
|
||||
// DEVELOPERS PLEASE NOTE
|
||||
//
|
||||
// All language files should use UTF-8 as their encoding and the files must not contain a BOM.
|
||||
//
|
||||
// Placeholders can now contain order information, e.g. instead of
|
||||
// 'Page %s of %s' you can (and should) write 'Page %1$s of %2$s', this allows
|
||||
// translators to re-order the output of data while ensuring it remains correct
|
||||
//
|
||||
// You do not need this where single placeholders are used, e.g. 'Message %d' is fine
|
||||
// equally where a string contains only two placeholders which are used to wrap text
|
||||
// in a url you again do not need to specify an order e.g., 'Click %sHERE%s' is fine
|
||||
$lang = array_merge($lang, array(
|
||||
'CLOCK' => 'Clock',
|
||||
|
||||
// ACP
|
||||
'ACP_PORTAL_CLOCK_SETTINGS' => 'Clock Settings',
|
||||
'ACP_PORTAL_CLOCK_SETTINGS_EXP' => 'This is where you customize your clock',
|
||||
'ACP_PORTAL_CLOCK_SRC' => 'Clock',
|
||||
'ACP_PORTAL_CLOCK_SRC_EXP' => 'Enter the filename of your clock. The clock needs to be located in styles/*yourstyle*/theme/images/portal/.',
|
||||
));
|
||||
@@ -1,48 +0,0 @@
|
||||
<?php
|
||||
/**
|
||||
*
|
||||
* @package Board3 Portal v2 - Custom
|
||||
* @copyright (c) Board3 Group ( www.board3.de )
|
||||
* @license http://opensource.org/licenses/gpl-license.php GNU Public License
|
||||
*
|
||||
*/
|
||||
|
||||
/**
|
||||
* DO NOT CHANGE
|
||||
*/
|
||||
if (!defined('IN_PHPBB'))
|
||||
{
|
||||
exit;
|
||||
}
|
||||
|
||||
if (empty($lang) || !is_array($lang))
|
||||
{
|
||||
$lang = array();
|
||||
}
|
||||
|
||||
// DEVELOPERS PLEASE NOTE
|
||||
//
|
||||
// All language files should use UTF-8 as their encoding and the files must not contain a BOM.
|
||||
//
|
||||
// Placeholders can now contain order information, e.g. instead of
|
||||
// 'Page %s of %s' you can (and should) write 'Page %1$s of %2$s', this allows
|
||||
// translators to re-order the output of data while ensuring it remains correct
|
||||
//
|
||||
// You do not need this where single placeholders are used, e.g. 'Message %d' is fine
|
||||
// equally where a string contains only two placeholders which are used to wrap text
|
||||
// in a url you again do not need to specify an order e.g., 'Click %sHERE%s' is fine
|
||||
$lang = array_merge($lang, array(
|
||||
'PORTAL_CUSTOM' => 'Custom Block',
|
||||
|
||||
// ACP
|
||||
'ACP_PORTAL_CUSTOM_SETTINGS' => 'Custom Block Settings',
|
||||
'ACP_PORTAL_CUSTOM_SETTINGS_EXP' => 'Here you can edit your custom block',
|
||||
'ACP_PORTAL_CUSTOM_CODE_SHORT' => 'The code you entered is not long enough.',
|
||||
'ACP_PORTAL_CUSTOM_PREVIEW' => 'Preview',
|
||||
'ACP_PORTAL_CUSTOM_CODE' => 'Custom Block Code',
|
||||
'ACP_PORTAL_CUSTOM_CODE_EXP' => 'Change the code for the small custom block (HTML or BBCode) here.',
|
||||
'ACP_PORTAL_CUSTOM_PERMISSION' => 'Custom Block permissions',
|
||||
'ACP_PORTAL_CUSTOM_PERMISSION_EXP' => 'Select the groups that should be able to view the custom block. If you want all users to be able to view the custom block, don’t select anything.<br />Select/Deselect multiple groups by holding <samp>CTRL</samp> and clicking.',
|
||||
'ACP_PORTAL_CUSTOM_BBCODE' => 'Activate BBCode for the custom block',
|
||||
'ACP_PORTAL_CUSTOM_BBCODE_EXP' => 'BBCode could be used in this box. If BBCode is not activated, HTML will be parsed.',
|
||||
));
|
||||
@@ -1,65 +0,0 @@
|
||||
<?php
|
||||
/**
|
||||
*
|
||||
* @package Board3 Portal v2 - Donation
|
||||
* @copyright (c) Board3 Group ( www.board3.de )
|
||||
* @license http://opensource.org/licenses/gpl-license.php GNU Public License
|
||||
*
|
||||
*/
|
||||
|
||||
/**
|
||||
* DO NOT CHANGE
|
||||
*/
|
||||
if (!defined('IN_PHPBB'))
|
||||
{
|
||||
exit;
|
||||
}
|
||||
|
||||
if (empty($lang) || !is_array($lang))
|
||||
{
|
||||
$lang = array();
|
||||
}
|
||||
|
||||
// DEVELOPERS PLEASE NOTE
|
||||
//
|
||||
// All language files should use UTF-8 as their encoding and the files must not contain a BOM.
|
||||
//
|
||||
// Placeholders can now contain order information, e.g. instead of
|
||||
// 'Page %s of %s' you can (and should) write 'Page %1$s of %2$s', this allows
|
||||
// translators to re-order the output of data while ensuring it remains correct
|
||||
//
|
||||
// You do not need this where single placeholders are used, e.g. 'Message %d' is fine
|
||||
// equally where a string contains only two placeholders which are used to wrap text
|
||||
// in a url you again do not need to specify an order e.g., 'Click %sHERE%s' is fine
|
||||
$lang = array_merge($lang, array(
|
||||
'DONATION' => 'PayPal donations',
|
||||
'DONATION_TEXT' => 'is a group supplying services with no intention of any monetary profit. Your donations are welcome so that the cost of our server, domain name, etc. can be covered.',
|
||||
'PAY_MSG' => 'Please use a decimal point (not a comma) as the separator, e.g. 3.50',
|
||||
'PAY_ITEM' => 'Donate!', // paypal item
|
||||
|
||||
'AUD' => 'Australian Dollars (AUD)',
|
||||
'CAD' => 'Canadian Dollars (CAD)',
|
||||
'CZK' => 'Czech Koruna (CZK)',
|
||||
'DKK' => 'Danish Kroner (DKK)',
|
||||
'HKD' => 'Hong Kong Dollars (HKD)',
|
||||
'HUF' => 'Hungarian Forint (HUF)',
|
||||
'NZD' => 'New Zealand Dollars (NZD)',
|
||||
'NOK' => 'Norwegian Kroner (NOK)',
|
||||
'PLN' => 'Polish Zlotych (PLN)',
|
||||
'GBP' => 'British Pounds (GBP)',
|
||||
'SGD' => 'Singapore Dollars (SGD)',
|
||||
'SEK' => 'Swedish Kronor (SEK)',
|
||||
'CHF' => 'Swiss Francs (CHF)',
|
||||
'JPY' => 'Japanese Yen (JPY)',
|
||||
'USD' => 'U.S. Dollars (USD)',
|
||||
'EUR' => 'Euros (EUR)',
|
||||
'MXN' => 'Mexican Pesos (MXN)',
|
||||
'ILS' => 'Israeli New Shekels (ILS)',
|
||||
|
||||
// ACP
|
||||
'ACP_PORTAL_PAYPAL_SETTINGS' => 'Paypal settings',
|
||||
'ACP_PORTAL_PAYPAL_SETTINGS_EXP' => 'This is where you customize the Paypal block.',
|
||||
'PORTAL_PAY_ACC' => 'Paypal account to use',
|
||||
'PORTAL_PAY_ACC_EXP' => 'Enter your Paypal e-mail address eg. xxx@xxx.com',
|
||||
'PORTAL_PAY_CUSTOM' => 'Append username to Paypal donation',
|
||||
));
|
||||
@@ -1,36 +0,0 @@
|
||||
<?php
|
||||
/**
|
||||
*
|
||||
* @package Board3 Portal v2 - Forumlist
|
||||
* @copyright (c) Board3 Group ( www.board3.de )
|
||||
* @license http://opensource.org/licenses/gpl-license.php GNU Public License
|
||||
*
|
||||
*/
|
||||
|
||||
/**
|
||||
* DO NOT CHANGE
|
||||
*/
|
||||
if (!defined('IN_PHPBB'))
|
||||
{
|
||||
exit;
|
||||
}
|
||||
|
||||
if (empty($lang) || !is_array($lang))
|
||||
{
|
||||
$lang = array();
|
||||
}
|
||||
|
||||
// DEVELOPERS PLEASE NOTE
|
||||
//
|
||||
// All language files should use UTF-8 as their encoding and the files must not contain a BOM.
|
||||
//
|
||||
// Placeholders can now contain order information, e.g. instead of
|
||||
// 'Page %s of %s' you can (and should) write 'Page %1$s of %2$s', this allows
|
||||
// translators to re-order the output of data while ensuring it remains correct
|
||||
//
|
||||
// You do not need this where single placeholders are used, e.g. 'Message %d' is fine
|
||||
// equally where a string contains only two placeholders which are used to wrap text
|
||||
// in a url you again do not need to specify an order e.g., 'Click %sHERE%s' is fine
|
||||
$lang = array_merge($lang, array(
|
||||
'PORTAL_FORUMLIST' => 'Forumlist',
|
||||
));
|
||||
@@ -1,47 +0,0 @@
|
||||
<?php
|
||||
/**
|
||||
*
|
||||
* @package Board3 Portal v2 - Friends
|
||||
* @copyright (c) Board3 Group ( www.board3.de )
|
||||
* @license http://opensource.org/licenses/gpl-license.php GNU Public License
|
||||
*
|
||||
*/
|
||||
|
||||
/**
|
||||
* DO NOT CHANGE
|
||||
*/
|
||||
if (!defined('IN_PHPBB'))
|
||||
{
|
||||
exit;
|
||||
}
|
||||
|
||||
if (empty($lang) || !is_array($lang))
|
||||
{
|
||||
$lang = array();
|
||||
}
|
||||
|
||||
// DEVELOPERS PLEASE NOTE
|
||||
//
|
||||
// All language files should use UTF-8 as their encoding and the files must not contain a BOM.
|
||||
//
|
||||
// Placeholders can now contain order information, e.g. instead of
|
||||
// 'Page %s of %s' you can (and should) write 'Page %1$s of %2$s', this allows
|
||||
// translators to re-order the output of data while ensuring it remains correct
|
||||
//
|
||||
// You do not need this where single placeholders are used, e.g. 'Message %d' is fine
|
||||
// equally where a string contains only two placeholders which are used to wrap text
|
||||
// in a url you again do not need to specify an order e.g., 'Click %sHERE%s' is fine
|
||||
$lang = array_merge($lang, array(
|
||||
'FRIENDS' => 'Friends',
|
||||
'FRIENDS_OFFLINE' => 'Offline',
|
||||
'FRIENDS_ONLINE' => 'Online',
|
||||
'NO_FRIENDS' => 'No friends currently defined',
|
||||
'NO_FRIENDS_OFFLINE' => 'No friends offline',
|
||||
'NO_FRIENDS_ONLINE' => 'No friends online',
|
||||
|
||||
// ACP
|
||||
'ACP_PORTAL_FRIENDS_SETTINGS' => 'Friends Settings',
|
||||
'ACP_PORTAL_FRIENDS_SETTINGS_EXP' => 'This is where you customize the friends block.',
|
||||
'PORTAL_MAX_ONLINE_FRIENDS' => 'Limit of displayed friends',
|
||||
'PORTAL_MAX_ONLINE_FRIENDS_EXP' => 'The maximum number of friends displayed.',
|
||||
));
|
||||
@@ -1,43 +0,0 @@
|
||||
<?php
|
||||
/**
|
||||
*
|
||||
* @package Board3 Portal v2 - Latest Bots
|
||||
* @copyright (c) Board3 Group ( www.board3.de )
|
||||
* @license http://opensource.org/licenses/gpl-license.php GNU Public License
|
||||
*
|
||||
*/
|
||||
|
||||
/**
|
||||
* DO NOT CHANGE
|
||||
*/
|
||||
if (!defined('IN_PHPBB'))
|
||||
{
|
||||
exit;
|
||||
}
|
||||
|
||||
if (empty($lang) || !is_array($lang))
|
||||
{
|
||||
$lang = array();
|
||||
}
|
||||
|
||||
// DEVELOPERS PLEASE NOTE
|
||||
//
|
||||
// All language files should use UTF-8 as their encoding and the files must not contain a BOM.
|
||||
//
|
||||
// Placeholders can now contain order information, e.g. instead of
|
||||
// 'Page %s of %s' you can (and should) write 'Page %1$s of %2$s', this allows
|
||||
// translators to re-order the output of data while ensuring it remains correct
|
||||
//
|
||||
// You do not need this where single placeholders are used, e.g. 'Message %d' is fine
|
||||
// equally where a string contains only two placeholders which are used to wrap text
|
||||
// in a url you again do not need to specify an order e.g., 'Click %sHERE%s' is fine
|
||||
$lang = array_merge($lang, array(
|
||||
'LATEST_BOTS' => 'Latest Bots',
|
||||
'LAST_VISITED_BOTS' => 'Last visited bots',
|
||||
|
||||
// ACP
|
||||
'ACP_PORTAL_BOTS_SETTINGS' => 'Visiting bots settings',
|
||||
'ACP_PORTAL_BOTS_SETTINGS_EXP' => 'This is where you customize the visiting bots block.',
|
||||
'PORTAL_LAST_VISITED_BOTS_NUMBER' => 'How many bots to display',
|
||||
'PORTAL_LAST_VISITED_BOTS_NUMBER_EXP' => '0 means infinite',
|
||||
));
|
||||
@@ -1,42 +0,0 @@
|
||||
<?php
|
||||
/**
|
||||
*
|
||||
* @package Board3 Portal v2 - Latest Members
|
||||
* @copyright (c) Board3 Group ( www.board3.de )
|
||||
* @license http://opensource.org/licenses/gpl-license.php GNU Public License
|
||||
*
|
||||
*/
|
||||
|
||||
/**
|
||||
* DO NOT CHANGE
|
||||
*/
|
||||
if (!defined('IN_PHPBB'))
|
||||
{
|
||||
exit;
|
||||
}
|
||||
|
||||
if (empty($lang) || !is_array($lang))
|
||||
{
|
||||
$lang = array();
|
||||
}
|
||||
|
||||
// DEVELOPERS PLEASE NOTE
|
||||
//
|
||||
// All language files should use UTF-8 as their encoding and the files must not contain a BOM.
|
||||
//
|
||||
// Placeholders can now contain order information, e.g. instead of
|
||||
// 'Page %s of %s' you can (and should) write 'Page %1$s of %2$s', this allows
|
||||
// translators to re-order the output of data while ensuring it remains correct
|
||||
//
|
||||
// You do not need this where single placeholders are used, e.g. 'Message %d' is fine
|
||||
// equally where a string contains only two placeholders which are used to wrap text
|
||||
// in a url you again do not need to specify an order e.g., 'Click %sHERE%s' is fine
|
||||
$lang = array_merge($lang, array(
|
||||
'LATEST_MEMBERS' => 'Newest members',
|
||||
|
||||
// ACP
|
||||
'ACP_PORTAL_MEMBERS_SETTINGS' => 'Newest members settings',
|
||||
'ACP_PORTAL_MEMBERS_SETTINGS_EXP' => 'This is where you customize the newest members block.',
|
||||
'PORTAL_MAX_LAST_MEMBER' => 'Maximum number of newest members shown',
|
||||
'PORTAL_MAX_LAST_MEMBER_EXP' => '0 means infinite',
|
||||
));
|
||||
@@ -1,45 +0,0 @@
|
||||
<?php
|
||||
/**
|
||||
*
|
||||
* @package Board3 Portal v2 - Leaders
|
||||
* @copyright (c) Board3 Group ( www.board3.de )
|
||||
* @license http://opensource.org/licenses/gpl-license.php GNU Public License
|
||||
*
|
||||
*/
|
||||
|
||||
/**
|
||||
* DO NOT CHANGE
|
||||
*/
|
||||
if (!defined('IN_PHPBB'))
|
||||
{
|
||||
exit;
|
||||
}
|
||||
|
||||
if (empty($lang) || !is_array($lang))
|
||||
{
|
||||
$lang = array();
|
||||
}
|
||||
|
||||
// DEVELOPERS PLEASE NOTE
|
||||
//
|
||||
// All language files should use UTF-8 as their encoding and the files must not contain a BOM.
|
||||
//
|
||||
// Placeholders can now contain order information, e.g. instead of
|
||||
// 'Page %s of %s' you can (and should) write 'Page %1$s of %2$s', this allows
|
||||
// translators to re-order the output of data while ensuring it remains correct
|
||||
//
|
||||
// You do not need this where single placeholders are used, e.g. 'Message %d' is fine
|
||||
// equally where a string contains only two placeholders which are used to wrap text
|
||||
// in a url you again do not need to specify an order e.g., 'Click %sHERE%s' is fine
|
||||
$lang = array_merge($lang, array(
|
||||
'NO_ADMINISTRATORS_P' => 'No Administrators',
|
||||
'NO_MODERATORS_P' => 'No Moderators',
|
||||
'NO_GROUPS_P' => 'No Groups',
|
||||
'ACP_PORTAL_LEADERS' => 'The Team',
|
||||
|
||||
// ACP
|
||||
'ACP_PORTAL_LEADERS' => 'Team Settings',
|
||||
'ACP_PORTAL_LEADERS_EXP' => 'This is where you customize the team block',
|
||||
'PORTAL_LEADERS_EXT' => 'Extended Leaders / Team',
|
||||
'PORTAL_LEADERS_EXT_EXP' => 'The standard block lists all admins/mods, while the extended block includes all non-hidden groups with a legend.',
|
||||
));
|
||||
@@ -1,37 +0,0 @@
|
||||
<?php
|
||||
/**
|
||||
*
|
||||
* @package Board3 Portal v2 - Link Us
|
||||
* @copyright (c) Board3 Group ( www.board3.de )
|
||||
* @license http://opensource.org/licenses/gpl-license.php GNU Public License
|
||||
*
|
||||
*/
|
||||
|
||||
/**
|
||||
* DO NOT CHANGE
|
||||
*/
|
||||
if (!defined('IN_PHPBB'))
|
||||
{
|
||||
exit;
|
||||
}
|
||||
|
||||
if (empty($lang) || !is_array($lang))
|
||||
{
|
||||
$lang = array();
|
||||
}
|
||||
|
||||
// DEVELOPERS PLEASE NOTE
|
||||
//
|
||||
// All language files should use UTF-8 as their encoding and the files must not contain a BOM.
|
||||
//
|
||||
// Placeholders can now contain order information, e.g. instead of
|
||||
// 'Page %s of %s' you can (and should) write 'Page %1$s of %2$s', this allows
|
||||
// translators to re-order the output of data while ensuring it remains correct
|
||||
//
|
||||
// You do not need this where single placeholders are used, e.g. 'Message %d' is fine
|
||||
// equally where a string contains only two placeholders which are used to wrap text
|
||||
// in a url you again do not need to specify an order e.g., 'Click %sHERE%s' is fine
|
||||
$lang = array_merge($lang, array(
|
||||
'LINK_US' => 'Link to us',
|
||||
'LINK_US_TXT' => 'Please feel free to link to <strong>%s</strong>. Use the following HTML:',
|
||||
));
|
||||
@@ -1,56 +0,0 @@
|
||||
<?php
|
||||
/**
|
||||
*
|
||||
* @package Board3 Portal v2 - Links
|
||||
* @copyright (c) Board3 Group ( www.board3.de )
|
||||
* @license http://opensource.org/licenses/gpl-license.php GNU Public License
|
||||
*
|
||||
*/
|
||||
|
||||
/**
|
||||
* DO NOT CHANGE
|
||||
*/
|
||||
if (!defined('IN_PHPBB'))
|
||||
{
|
||||
exit;
|
||||
}
|
||||
|
||||
if (empty($lang) || !is_array($lang))
|
||||
{
|
||||
$lang = array();
|
||||
}
|
||||
|
||||
// DEVELOPERS PLEASE NOTE
|
||||
//
|
||||
// All language files should use UTF-8 as their encoding and the files must not contain a BOM.
|
||||
//
|
||||
// Placeholders can now contain order information, e.g. instead of
|
||||
// 'Page %s of %s' you can (and should) write 'Page %1$s of %2$s', this allows
|
||||
// translators to re-order the output of data while ensuring it remains correct
|
||||
//
|
||||
// You do not need this where single placeholders are used, e.g. 'Message %d' is fine
|
||||
// equally where a string contains only two placeholders which are used to wrap text
|
||||
// in a url you again do not need to specify an order e.g., 'Click %sHERE%s' is fine
|
||||
$lang = array_merge($lang, array(
|
||||
'PORTAL_LINKS' => 'Links',
|
||||
'LINKS_NO_LINKS' => 'No links',
|
||||
|
||||
// ACP
|
||||
'ACP_PORTAL_LINKS' => 'Link Settings',
|
||||
'ACP_PORTAL_LINKS_EXP' => 'Customize the links listed in the links block',
|
||||
'ACP_PORTAL_LINK_TITLE' => 'Title',
|
||||
'ACP_PORTAL_LINK_TYPE' => 'Link type',
|
||||
'ACP_PORTAL_LINK_TYPE_EXP' => 'If you have a link to a page of your board, choose "Internal link" in order to prevent unwanted logouts.',
|
||||
'ACP_PORTAL_LINK_INT' => 'Internal link',
|
||||
'ACP_PORTAL_LINK_EXT' => 'External link',
|
||||
'ACP_PORTAL_LINK_ADD' => 'Add new navigation link',
|
||||
'ACP_PORTAL_LINK_URL' => 'Link URL',
|
||||
'ACP_PORTAL_LINK_URL_EXP' => 'External links:<br />All links should be entered with a http://<br /><br />Internal links:<br />Only enter the php file as link url, i.e. index.php?style=4.',
|
||||
'ACP_PORTAL_LINK_PERMISSION' => 'Link permissions',
|
||||
'ACP_PORTAL_LINK_PERMISSION_EXP'=> 'Select the groups that should be authorized to view the link. If you want all users to be able to view the link, don’t select anything.<br />Select/Deselect multiple groups by holding <samp>CTRL</samp> and clicking.',
|
||||
'ACP_PORTAL_LINKS_NEW_WINDOW' => 'Open external links in a new window',
|
||||
|
||||
// Errors
|
||||
'NO_LINK_TITLE' => 'You must enter a title for this link.',
|
||||
'NO_LINK_URL' => 'You must enter a link URL.',
|
||||
));
|
||||
@@ -1,69 +0,0 @@
|
||||
<?php
|
||||
/**
|
||||
*
|
||||
* @package Board3 Portal v2 - Main Menu
|
||||
* @copyright (c) Board3 Group ( www.board3.de )
|
||||
* @license http://opensource.org/licenses/gpl-license.php GNU Public License
|
||||
*
|
||||
*/
|
||||
|
||||
/**
|
||||
* DO NOT CHANGE
|
||||
*/
|
||||
if (!defined('IN_PHPBB'))
|
||||
{
|
||||
exit;
|
||||
}
|
||||
|
||||
if (empty($lang) || !is_array($lang))
|
||||
{
|
||||
$lang = array();
|
||||
}
|
||||
|
||||
// DEVELOPERS PLEASE NOTE
|
||||
//
|
||||
// All language files should use UTF-8 as their encoding and the files must not contain a BOM.
|
||||
//
|
||||
// Placeholders can now contain order information, e.g. instead of
|
||||
// 'Page %s of %s' you can (and should) write 'Page %1$s of %2$s', this allows
|
||||
// translators to re-order the output of data while ensuring it remains correct
|
||||
//
|
||||
// You do not need this where single placeholders are used, e.g. 'Message %d' is fine
|
||||
// equally where a string contains only two placeholders which are used to wrap text
|
||||
// in a url you again do not need to specify an order e.g., 'Click %sHERE%s' is fine
|
||||
$lang = array_merge($lang, array(
|
||||
'M_MENU' => 'Menu',
|
||||
'M_CONTENT' => 'Content',
|
||||
'M_ACP' => 'ACP',
|
||||
'M_HELP' => 'Help',
|
||||
'M_BBCODE' => 'BBCode FAQ',
|
||||
'M_TERMS' => 'Terms of use',
|
||||
'M_PRV' => 'Privacy policy',
|
||||
'M_SEARCH' => 'Search',
|
||||
'MENU_NO_LINKS' => 'No links',
|
||||
|
||||
// ACP
|
||||
'ACP_PORTAL_MENU' => 'Menu settings',
|
||||
'ACP_PORTAL_MENU_LINK_SETTINGS' => 'Link Settings',
|
||||
'ACP_PORTAL_MENU_EXP' => 'Manage your main menu',
|
||||
'ACP_PORTAL_MENU_MANAGE' => 'Manage menu',
|
||||
'ACP_PORTAL_MENU_MANAGE_EXP' => 'You can manage the links of your main menu here.',
|
||||
'ACP_PORTAL_MENU_CAT' => 'Category',
|
||||
'ACP_PORTAL_MENU_IS_CAT' => 'Set as special link category',
|
||||
'ACP_PORTAL_MENU_INT' => 'Internal link',
|
||||
'ACP_PORTAL_MENU_EXT' => 'External link',
|
||||
'ACP_PORTAL_MENU_TITLE' => 'Title',
|
||||
'ACP_PORTAL_MENU_URL' => 'Link URL',
|
||||
'ACP_PORTAL_MENU_ADD' => 'Add new navigation link',
|
||||
'ACP_PORTAL_MENU_TYPE' => 'Link type',
|
||||
'ACP_PORTAL_MENU_TYPE_EXP' => 'If you have a link to a page of your board, choose "Internal link" in order to prevent unwanted logouts.',
|
||||
'ACP_PORTAL_MENU_CREATE_CAT' => 'You need to create a category first.',
|
||||
'ACP_PORTAL_MENU_URL_EXP' => 'External links:<br />All links should be entered with a http://<br /><br />Internal links:<br />Only enter the php file as link url, i.e. index.php?style=4.',
|
||||
'ACP_PORTAL_MENU_PERMISSION' => 'Link permissions',
|
||||
'ACP_PORTAL_MENU_PERMISSION_EXP'=> 'Select the groups that should be authorized to view the link. If you want all users to be able to view the link, don’t select anything.<br />Select/Deselect multiple groups by holding <samp>CTRL</samp> and clicking.',
|
||||
'ACP_PORTAL_MENU_EXT_NEW_WINDOW'=> 'Open external links in a new window',
|
||||
|
||||
// Errors
|
||||
'NO_LINK_TITLE' => 'You must enter a title for this link.',
|
||||
'NO_LINK_URL' => 'You must enter a link URL.',
|
||||
));
|
||||
@@ -1,70 +0,0 @@
|
||||
<?php
|
||||
/**
|
||||
*
|
||||
* @package Board3 Portal v2 - News
|
||||
* @copyright (c) Board3 Group ( www.board3.de )
|
||||
* @license http://opensource.org/licenses/gpl-license.php GNU Public License
|
||||
*
|
||||
*/
|
||||
|
||||
/**
|
||||
* DO NOT CHANGE
|
||||
*/
|
||||
if (!defined('IN_PHPBB'))
|
||||
{
|
||||
exit;
|
||||
}
|
||||
|
||||
if (empty($lang) || !is_array($lang))
|
||||
{
|
||||
$lang = array();
|
||||
}
|
||||
|
||||
// DEVELOPERS PLEASE NOTE
|
||||
//
|
||||
// All language files should use UTF-8 as their encoding and the files must not contain a BOM.
|
||||
//
|
||||
// Placeholders can now contain order information, e.g. instead of
|
||||
// 'Page %s of %s' you can (and should) write 'Page %1$s of %2$s', this allows
|
||||
// translators to re-order the output of data while ensuring it remains correct
|
||||
//
|
||||
// You do not need this where single placeholders are used, e.g. 'Message %d' is fine
|
||||
// equally where a string contains only two placeholders which are used to wrap text
|
||||
// in a url you again do not need to specify an order e.g., 'Click %sHERE%s' is fine
|
||||
$lang = array_merge($lang, array(
|
||||
'LATEST_NEWS' => 'Latest news',
|
||||
'READ_FULL' => 'Read all',
|
||||
'NO_NEWS' => 'No news',
|
||||
'POSTED_BY' => 'Poster',
|
||||
'COMMENTS' => 'Comments',
|
||||
'VIEW_COMMENTS' => 'View comments',
|
||||
'PORTAL_POST_REPLY' => 'Write comments',
|
||||
'TOPIC_VIEWS' => 'Views',
|
||||
'JUMP_NEWEST' => 'Jump to newest post',
|
||||
'JUMP_FIRST' => 'Jump to first post',
|
||||
'JUMP_TO_POST' => 'Jump to post',
|
||||
|
||||
// ACP
|
||||
'ACP_PORTAL_NEWS_SETTINGS' => 'News settings',
|
||||
'ACP_PORTAL_NEWS_SETTINGS_EXP' => 'This is where you customize the news block.',
|
||||
'PORTAL_NEWS_STYLE' => 'Compact news block style',
|
||||
'PORTAL_NEWS_STYLE_EXP' => '"Yes" means use the compact style for news. "No" means use the large style (text view).',
|
||||
'PORTAL_SHOW_ALL_NEWS' => 'Show all of the articles in this forum',
|
||||
'PORTAL_SHOW_ALL_NEWS_EXP' => 'Includes stickies.',
|
||||
'PORTAL_NUMBER_OF_NEWS' => 'Number of news articles on the portal',
|
||||
'PORTAL_NUMBER_OF_NEWS_EXP' => '0 means infinite',
|
||||
'PORTAL_NEWS_LENGTH' => 'Max length of news article',
|
||||
'PORTAL_NEWS_LENGTH_EXP' => '0 means infinite',
|
||||
'PORTAL_NEWS_FORUM' => 'News Forums',
|
||||
'PORTAL_NEWS_FORUM_EXP' => 'Forum(s) we pull the articles from, leave blank to pull from all forums. If "Exclude forums" is set to "Yes", select the forums you want to exclude.<br />If "Exclude forums" is set to "No" select the forums you want to see.<br />Select/Deselect multiple forums by holding <samp>CTRL</samp> and clicking.',
|
||||
'PORTAL_NEWS_EXCLUDE' => 'Exclude forums',
|
||||
'PORTAL_NEWS_EXCLUDE_EXP' => 'Select "Yes" if you want to exlude the selected forums from the news block, and "No" if you want to see only the selected forums in the news block.',
|
||||
'PORTAL_NEWS_PERMISSIONS' => 'Enable/disable permissions',
|
||||
'PORTAL_NEWS_PERMISSIONS_EXP' => 'Take forum viewing permissions into account when displaying news',
|
||||
'PORTAL_NEWS_SHOW_LAST' => 'Sort in order to the newest posts',
|
||||
'PORTAL_NEWS_SHOW_LAST_EXP' => 'When activated, the newest will be sorted in order to the newest posts. When deactivated, the news will be sorted in order to the newest topic.',
|
||||
'PORTAL_NEWS_ARCHIVE' => 'Enable the news archive system',
|
||||
'PORTAL_NEWS_ARCHIVE_EXP' => 'If enabled the news archive system / page numbers will be displayed.',
|
||||
'PORTAL_SHOW_REPLIES_VIEWS' => 'Display the number of replies and views',
|
||||
'PORTAL_SHOW_REPLIES_VIEWS_EXP' => 'This setting pertains to the compact block.<br />When Yes, the number of replies and views are shown in 2 extra columns. When No, replies and views will be shown beside the forum name. Select No if you have problems with the display of the extra columns due to the extra width required.',
|
||||
));
|
||||
@@ -1,53 +0,0 @@
|
||||
<?php
|
||||
/**
|
||||
*
|
||||
* @package Board3 Portal v2 - Poll
|
||||
* @copyright (c) Board3 Group ( www.board3.de )
|
||||
* @license http://opensource.org/licenses/gpl-license.php GNU Public License
|
||||
*
|
||||
*/
|
||||
|
||||
/**
|
||||
* DO NOT CHANGE
|
||||
*/
|
||||
if (!defined('IN_PHPBB'))
|
||||
{
|
||||
exit;
|
||||
}
|
||||
|
||||
if (empty($lang) || !is_array($lang))
|
||||
{
|
||||
$lang = array();
|
||||
}
|
||||
|
||||
// DEVELOPERS PLEASE NOTE
|
||||
//
|
||||
// All language files should use UTF-8 as their encoding and the files must not contain a BOM.
|
||||
//
|
||||
// Placeholders can now contain order information, e.g. instead of
|
||||
// 'Page %s of %s' you can (and should) write 'Page %1$s of %2$s', this allows
|
||||
// translators to re-order the output of data while ensuring it remains correct
|
||||
//
|
||||
// You do not need this where single placeholders are used, e.g. 'Message %d' is fine
|
||||
// equally where a string contains only two placeholders which are used to wrap text
|
||||
// in a url you again do not need to specify an order e.g., 'Click %sHERE%s' is fine
|
||||
$lang = array_merge($lang, array(
|
||||
'PORTAL_POLL' => 'Poll',
|
||||
'LATEST_POLLS' => 'Latest Polls',
|
||||
'NO_OPTIONS' => 'This poll has no available options.',
|
||||
'NO_POLL' => 'No polls available',
|
||||
'RETURN_PORTAL' => '%sReturn to the portal%s',
|
||||
|
||||
// ACP
|
||||
'ACP_PORTAL_POLLS_SETTINGS' => 'Poll settings',
|
||||
'ACP_PORTAL_POLLS_SETTINGS_EXP' => 'This is where you customize the poll block.',
|
||||
'PORTAL_POLL_TOPIC_ID' => 'Poll forum(s)',
|
||||
'PORTAL_POLL_TOPIC_ID_EXP' => 'The forum(s) from which the polls should be displayed. If "Exclude forums" is set to "Yes", select the forums you want to exclude.<br />If "Exclude forums" is set to "No" select the forums you want to see.<br />Select/Deselect multiple forums by holding <samp>CTRL</samp> and clicking.',
|
||||
'PORTAL_POLL_EXCLUDE_ID' => 'Exclude Forums',
|
||||
'PORTAL_POLL_EXCLUDE_ID_EXP' => 'Select "Yes" if you want to exlude the selected forums from the polls block, and "No" if you only want to see the polls from the selected forums in the polls block.',
|
||||
'PORTAL_POLL_LIMIT' => 'Poll display limit',
|
||||
'PORTAL_POLL_LIMIT_EXP' => 'The number of polls you would like to display on the portal page.',
|
||||
'PORTAL_POLL_ALLOW_VOTE' => 'Allow voting',
|
||||
'PORTAL_POLL_ALLOW_VOTE_EXP' => 'Allow users with the required permissions to vote from the portal page.',
|
||||
'PORTAL_POLL_HIDE' => 'Hide expired polls?',
|
||||
));
|
||||
@@ -1,41 +0,0 @@
|
||||
<?php
|
||||
/**
|
||||
*
|
||||
* @package Board3 Portal v2 - Random Member
|
||||
* @copyright (c) Board3 Group ( www.board3.de )
|
||||
* @license http://opensource.org/licenses/gpl-license.php GNU Public License
|
||||
*
|
||||
*/
|
||||
|
||||
/**
|
||||
* DO NOT CHANGE
|
||||
*/
|
||||
if (!defined('IN_PHPBB'))
|
||||
{
|
||||
exit;
|
||||
}
|
||||
|
||||
if (empty($lang) || !is_array($lang))
|
||||
{
|
||||
$lang = array();
|
||||
}
|
||||
|
||||
// DEVELOPERS PLEASE NOTE
|
||||
//
|
||||
// All language files should use UTF-8 as their encoding and the files must not contain a BOM.
|
||||
//
|
||||
// Placeholders can now contain order information, e.g. instead of
|
||||
// 'Page %s of %s' you can (and should) write 'Page %1$s of %2$s', this allows
|
||||
// translators to re-order the output of data while ensuring it remains correct
|
||||
//
|
||||
// You do not need this where single placeholders are used, e.g. 'Message %d' is fine
|
||||
// equally where a string contains only two placeholders which are used to wrap text
|
||||
// in a url you again do not need to specify an order e.g., 'Click %sHERE%s' is fine
|
||||
$lang = array_merge($lang, array(
|
||||
'PORTAL_RANDOM_MEMBER' => 'Random member',
|
||||
'RND_JOIN' => 'Join',
|
||||
'RND_POSTS' => 'Posts',
|
||||
'RND_OCC' => 'Occupation',
|
||||
'RND_FROM' => 'Location',
|
||||
'RND_WWW' => 'Web page',
|
||||
));
|
||||
@@ -1,51 +0,0 @@
|
||||
<?php
|
||||
/**
|
||||
*
|
||||
* @package Board3 Portal v2 - Recent
|
||||
* @copyright (c) Board3 Group ( www.board3.de )
|
||||
* @license http://opensource.org/licenses/gpl-license.php GNU Public License
|
||||
*
|
||||
*/
|
||||
|
||||
/**
|
||||
* DO NOT CHANGE
|
||||
*/
|
||||
if (!defined('IN_PHPBB'))
|
||||
{
|
||||
exit;
|
||||
}
|
||||
|
||||
if (empty($lang) || !is_array($lang))
|
||||
{
|
||||
$lang = array();
|
||||
}
|
||||
|
||||
// DEVELOPERS PLEASE NOTE
|
||||
//
|
||||
// All language files should use UTF-8 as their encoding and the files must not contain a BOM.
|
||||
//
|
||||
// Placeholders can now contain order information, e.g. instead of
|
||||
// 'Page %s of %s' you can (and should) write 'Page %1$s of %2$s', this allows
|
||||
// translators to re-order the output of data while ensuring it remains correct
|
||||
//
|
||||
// You do not need this where single placeholders are used, e.g. 'Message %d' is fine
|
||||
// equally where a string contains only two placeholders which are used to wrap text
|
||||
// in a url you again do not need to specify an order e.g., 'Click %sHERE%s' is fine
|
||||
$lang = array_merge($lang, array(
|
||||
'PORTAL_RECENT' => 'Recent',
|
||||
'PORTAL_RECENT_TOPIC' => 'Recent topics',
|
||||
'PORTAL_RECENT_ANN' => 'Recent announcements',
|
||||
'PORTAL_RECENT_HOT_TOPIC' => 'Recent popular topics',
|
||||
|
||||
// ACP
|
||||
'ACP_PORTAL_RECENT_SETTINGS' => 'Recent topics settings',
|
||||
'ACP_PORTAL_RECENT_SETTINGS_EXP' => 'This is where you customize the recent topics block.',
|
||||
'PORTAL_MAX_TOPIC' => 'Limit of recent announcements/hot topics',
|
||||
'PORTAL_MAX_TOPIC_EXP' => '0 means infinite',
|
||||
'PORTAL_RECENT_TITLE_LIMIT' => 'Character limit for each recent topic',
|
||||
'PORTAL_RECENT_TITLE_LIMIT_EXP' => '0 means infinite',
|
||||
'PORTAL_RECENT_FORUM' => 'Recent topics forums',
|
||||
'PORTAL_RECENT_FORUM_EXP' => 'Forum(s) we pull the topics from, leave blank to pull from all forums. If "Exclude forums" is set to "Yes", select the forums you want to exclude.<br />If "Exclude forums" is set to "No" select the forums you want to see.<br />Select/Deselect multiple forums by holding <samp>CTRL</samp> and clicking.',
|
||||
'PORTAL_EXCLUDE_FORUM' => 'Exclude Forums',
|
||||
'PORTAL_EXCLUDE_FORUM_EXP' => 'Select "Yes" if you want to exlude the selected forums from the recent topics block, and "No" if you want to see only the selected forums in the recent topics block.',
|
||||
));
|
||||
@@ -1,42 +0,0 @@
|
||||
<?php
|
||||
/**
|
||||
*
|
||||
* @package Board3 Portal v2 - Search
|
||||
* @copyright (c) Board3 Group ( www.board3.de )
|
||||
* @license http://opensource.org/licenses/gpl-license.php GNU Public License
|
||||
*
|
||||
*/
|
||||
|
||||
/**
|
||||
* DO NOT CHANGE
|
||||
*/
|
||||
if (!defined('IN_PHPBB'))
|
||||
{
|
||||
exit;
|
||||
}
|
||||
|
||||
if (empty($lang) || !is_array($lang))
|
||||
{
|
||||
$lang = array();
|
||||
}
|
||||
|
||||
// DEVELOPERS PLEASE NOTE
|
||||
//
|
||||
// All language files should use UTF-8 as their encoding and the files must not contain a BOM.
|
||||
//
|
||||
// Placeholders can now contain order information, e.g. instead of
|
||||
// 'Page %s of %s' you can (and should) write 'Page %1$s of %2$s', this allows
|
||||
// translators to re-order the output of data while ensuring it remains correct
|
||||
//
|
||||
// You do not need this where single placeholders are used, e.g. 'Message %d' is fine
|
||||
// equally where a string contains only two placeholders which are used to wrap text
|
||||
// in a url you again do not need to specify an order e.g., 'Click %sHERE%s' is fine
|
||||
$lang = array_merge($lang, array(
|
||||
'PORTAL_SEARCH' => 'Search',
|
||||
'PORTAL_SEARCH_GO' => 'Go',
|
||||
'PORTAL_SEARCH_SITE' => 'Forums',
|
||||
'PORTAL_SEARCH_POSTS' => 'Posts',
|
||||
'PORTAL_SEARCH_AUTHOR' => 'Author',
|
||||
'PORTAL_SEARCH_ENGINE' => 'Search engines',
|
||||
'PORTAL_SEARCH_ADV' => 'Advanced search',
|
||||
));
|
||||
@@ -1,51 +0,0 @@
|
||||
<?php
|
||||
/**
|
||||
*
|
||||
* @package Board3 Portal v2 - Statistics
|
||||
* @copyright (c) Board3 Group ( www.board3.de )
|
||||
* @license http://opensource.org/licenses/gpl-license.php GNU Public License
|
||||
*
|
||||
*/
|
||||
|
||||
/**
|
||||
* DO NOT CHANGE
|
||||
*/
|
||||
if (!defined('IN_PHPBB'))
|
||||
{
|
||||
exit;
|
||||
}
|
||||
|
||||
if (empty($lang) || !is_array($lang))
|
||||
{
|
||||
$lang = array();
|
||||
}
|
||||
|
||||
// DEVELOPERS PLEASE NOTE
|
||||
//
|
||||
// All language files should use UTF-8 as their encoding and the files must not contain a BOM.
|
||||
//
|
||||
// Placeholders can now contain order information, e.g. instead of
|
||||
// 'Page %s of %s' you can (and should) write 'Page %1$s of %2$s', this allows
|
||||
// translators to re-order the output of data while ensuring it remains correct
|
||||
//
|
||||
// You do not need this where single placeholders are used, e.g. 'Message %d' is fine
|
||||
// equally where a string contains only two placeholders which are used to wrap text
|
||||
// in a url you again do not need to specify an order e.g., 'Click %sHERE%s' is fine
|
||||
$lang = array_merge($lang, array(
|
||||
'ST_TOP' => 'Totals',
|
||||
'ST_TOP_ANNS' => 'Total Announcements:',
|
||||
'ST_TOP_STICKYS'=> 'Total Stickies:',
|
||||
'ST_TOT_ATTACH' => 'Total Attachments:',
|
||||
'TOPICS_PER_DAY_OTHER' => 'Topics per day: <strong>%d</strong>',
|
||||
'TOPICS_PER_DAY_ZERO' => 'Topics per day: <strong>0</strong>',
|
||||
'POSTS_PER_DAY_OTHER' => 'Posts per day: <strong>%d</strong>',
|
||||
'POSTS_PER_DAY_ZERO' => 'Posts per day: <strong>0</strong>',
|
||||
'USERS_PER_DAY_OTHER' => 'Users per day: <strong>%d</strong>',
|
||||
'USERS_PER_DAY_ZERO' => 'Users per day: <strong>0</strong>',
|
||||
'TOPICS_PER_USER_OTHER' => 'Topics per user: <strong>%d</strong>',
|
||||
'TOPICS_PER_USER_ZERO' => 'Topics per user: <strong>0</strong>',
|
||||
'POSTS_PER_USER_OTHER' => 'Posts per user: <strong>%d</strong>',
|
||||
'POSTS_PER_USER_ZERO' => 'Posts per user: <strong>0</strong>',
|
||||
'POSTS_PER_TOPIC_OTHER' => 'Posts per topic: <strong>%d</strong>',
|
||||
'POSTS_PER_TOPIC_ZERO' => 'Posts per topic: <strong>0</strong>',
|
||||
));
|
||||
@@ -1,37 +0,0 @@
|
||||
<?php
|
||||
/**
|
||||
*
|
||||
* @package Board3 Portal v2 - Stylechanger
|
||||
* @copyright (c) Board3 Group ( www.board3.de )
|
||||
* @license http://opensource.org/licenses/gpl-license.php GNU Public License
|
||||
*
|
||||
*/
|
||||
|
||||
/**
|
||||
* DO NOT CHANGE
|
||||
*/
|
||||
if (!defined('IN_PHPBB'))
|
||||
{
|
||||
exit;
|
||||
}
|
||||
|
||||
if (empty($lang) || !is_array($lang))
|
||||
{
|
||||
$lang = array();
|
||||
}
|
||||
|
||||
// DEVELOPERS PLEASE NOTE
|
||||
//
|
||||
// All language files should use UTF-8 as their encoding and the files must not contain a BOM.
|
||||
//
|
||||
// Placeholders can now contain order information, e.g. instead of
|
||||
// 'Page %s of %s' you can (and should) write 'Page %1$s of %2$s', this allows
|
||||
// translators to re-order the output of data while ensuring it remains correct
|
||||
//
|
||||
// You do not need this where single placeholders are used, e.g. 'Message %d' is fine
|
||||
// equally where a string contains only two placeholders which are used to wrap text
|
||||
// in a url you again do not need to specify an order e.g., 'Click %sHERE%s' is fine
|
||||
$lang = array_merge($lang, array(
|
||||
'BOARD_STYLE' => 'Board style',
|
||||
'STYLE_CHOOSE' => 'Select a style',
|
||||
));
|
||||
@@ -1,41 +0,0 @@
|
||||
<?php
|
||||
/**
|
||||
*
|
||||
* @package Board3 Portal v2 - Topposters
|
||||
* @copyright (c) Board3 Group ( www.board3.de )
|
||||
* @license http://opensource.org/licenses/gpl-license.php GNU Public License
|
||||
*
|
||||
*/
|
||||
|
||||
/**
|
||||
* DO NOT CHANGE
|
||||
*/
|
||||
if (!defined('IN_PHPBB'))
|
||||
{
|
||||
exit;
|
||||
}
|
||||
|
||||
if (empty($lang) || !is_array($lang))
|
||||
{
|
||||
$lang = array();
|
||||
}
|
||||
|
||||
// DEVELOPERS PLEASE NOTE
|
||||
//
|
||||
// All language files should use UTF-8 as their encoding and the files must not contain a BOM.
|
||||
//
|
||||
// Placeholders can now contain order information, e.g. instead of
|
||||
// 'Page %s of %s' you can (and should) write 'Page %1$s of %2$s', this allows
|
||||
// translators to re-order the output of data while ensuring it remains correct
|
||||
//
|
||||
// You do not need this where single placeholders are used, e.g. 'Message %d' is fine
|
||||
// equally where a string contains only two placeholders which are used to wrap text
|
||||
// in a url you again do not need to specify an order e.g., 'Click %sHERE%s' is fine
|
||||
$lang = array_merge($lang, array(
|
||||
'TOPPOSTERS' => 'Top Posters',
|
||||
'TOPPOSTERS_CONFIG' => 'Top Poster settings',
|
||||
|
||||
// ACP
|
||||
'NUM_TOPPOSTERS' => 'Number of Top Posters',
|
||||
'NUM_TOPPOSTERS_EXP' => 'Enter how many users should be displayed in the top posters block.',
|
||||
));
|
||||
@@ -1,45 +0,0 @@
|
||||
<?php
|
||||
/**
|
||||
*
|
||||
* @package Board3 Portal v2 - User Menu
|
||||
* @copyright (c) Board3 Group ( www.board3.de )
|
||||
* @license http://opensource.org/licenses/gpl-license.php GNU Public License
|
||||
*
|
||||
*/
|
||||
|
||||
/**
|
||||
* DO NOT CHANGE
|
||||
*/
|
||||
if (!defined('IN_PHPBB'))
|
||||
{
|
||||
exit;
|
||||
}
|
||||
|
||||
if (empty($lang) || !is_array($lang))
|
||||
{
|
||||
$lang = array();
|
||||
}
|
||||
|
||||
// DEVELOPERS PLEASE NOTE
|
||||
//
|
||||
// All language files should use UTF-8 as their encoding and the files must not contain a BOM.
|
||||
//
|
||||
// Placeholders can now contain order information, e.g. instead of
|
||||
// 'Page %s of %s' you can (and should) write 'Page %1$s of %2$s', this allows
|
||||
// translators to re-order the output of data while ensuring it remains correct
|
||||
//
|
||||
// You do not need this where single placeholders are used, e.g. 'Message %d' is fine
|
||||
// equally where a string contains only two placeholders which are used to wrap text
|
||||
// in a url you again do not need to specify an order e.g., 'Click %sHERE%s' is fine
|
||||
$lang = array_merge($lang, array(
|
||||
'USER_MENU' => 'User menu',
|
||||
'UM_LOG_ME_IN' => 'Remember me',
|
||||
'UM_HIDE_ME' => 'Hide me',
|
||||
'UM_REGISTER_NOW' => 'Register now!',
|
||||
'UM_MAIN_SUBSCRIBED'=> 'Subscribed',
|
||||
'UM_BOOKMARKS' => 'Bookmarks',
|
||||
'M_MENU' => 'Menu',
|
||||
'M_ACP' => 'ACP',
|
||||
'USER_MENU_SETTINGS' => 'User menu settings',
|
||||
'USER_MENU_REGISTER' => 'Show registration link in user menu',
|
||||
));
|
||||
@@ -1,43 +0,0 @@
|
||||
<?php
|
||||
/**
|
||||
*
|
||||
* @package Board3 Portal v2 - Welcome
|
||||
* @copyright (c) Board3 Group ( www.board3.de )
|
||||
* @license http://opensource.org/licenses/gpl-license.php GNU Public License
|
||||
*
|
||||
*/
|
||||
|
||||
/**
|
||||
* DO NOT CHANGE
|
||||
*/
|
||||
if (!defined('IN_PHPBB'))
|
||||
{
|
||||
exit;
|
||||
}
|
||||
|
||||
if (empty($lang) || !is_array($lang))
|
||||
{
|
||||
$lang = array();
|
||||
}
|
||||
|
||||
// DEVELOPERS PLEASE NOTE
|
||||
//
|
||||
// All language files should use UTF-8 as their encoding and the files must not contain a BOM.
|
||||
//
|
||||
// Placeholders can now contain order information, e.g. instead of
|
||||
// 'Page %s of %s' you can (and should) write 'Page %1$s of %2$s', this allows
|
||||
// translators to re-order the output of data while ensuring it remains correct
|
||||
//
|
||||
// You do not need this where single placeholders are used, e.g. 'Message %d' is fine
|
||||
// equally where a string contains only two placeholders which are used to wrap text
|
||||
// in a url you again do not need to specify an order e.g., 'Click %sHERE%s' is fine
|
||||
$lang = array_merge($lang, array(
|
||||
'PORTAL_WELCOME' => 'Welcome Message',
|
||||
|
||||
// ACP
|
||||
'ACP_PORTAL_WELCOME_SETTINGS' => 'Welcome Message Settings',
|
||||
'ACP_PORTAL_WELCOME_MESSAGE_SHORT' => 'The message you entered is not long enough.',
|
||||
'ACP_PORTAL_WELCOME_PREVIEW' => 'Welcome Message Preview',
|
||||
'ACP_PORTAL_WELCOME_MESSAGE' => 'Welcome Message',
|
||||
'ACP_PORTAL_WELCOME_MESSAGE_EXP' => 'You can change the welcome message in the textbox. BBCode, Images and URLs are allowed.',
|
||||
));
|
||||
@@ -1,36 +0,0 @@
|
||||
<?php
|
||||
/**
|
||||
*
|
||||
* @package Board3 Portal v2 - Who is online
|
||||
* @copyright (c) Board3 Group ( www.board3.de )
|
||||
* @license http://opensource.org/licenses/gpl-license.php GNU Public License
|
||||
*
|
||||
*/
|
||||
|
||||
/**
|
||||
* DO NOT CHANGE
|
||||
*/
|
||||
if (!defined('IN_PHPBB'))
|
||||
{
|
||||
exit;
|
||||
}
|
||||
|
||||
if (empty($lang) || !is_array($lang))
|
||||
{
|
||||
$lang = array();
|
||||
}
|
||||
|
||||
// DEVELOPERS PLEASE NOTE
|
||||
//
|
||||
// All language files should use UTF-8 as their encoding and the files must not contain a BOM.
|
||||
//
|
||||
// Placeholders can now contain order information, e.g. instead of
|
||||
// 'Page %s of %s' you can (and should) write 'Page %1$s of %2$s', this allows
|
||||
// translators to re-order the output of data while ensuring it remains correct
|
||||
//
|
||||
// You do not need this where single placeholders are used, e.g. 'Message %d' is fine
|
||||
// equally where a string contains only two placeholders which are used to wrap text
|
||||
// in a url you again do not need to specify an order e.g., 'Click %sHERE%s' is fine
|
||||
$lang = array_merge($lang, array(
|
||||
'PORTAL_WHOIS_ONLINE' => 'Who is online?',
|
||||
));
|
||||
@@ -1,563 +0,0 @@
|
||||
<?php
|
||||
/**
|
||||
*
|
||||
* @package Board3 Portal v2.1
|
||||
* @copyright (c) 2013 Board3 Group ( www.board3.de )
|
||||
* @license http://opensource.org/licenses/gpl-license.php GNU Public License v2
|
||||
*
|
||||
*/
|
||||
|
||||
namespace board3\portal\migrations;
|
||||
|
||||
class v210_beta1 extends \phpbb\db\migration\migration
|
||||
{
|
||||
/**
|
||||
* Portal config table
|
||||
* @var $portal_config
|
||||
*/
|
||||
private $portal_config = array();
|
||||
|
||||
public function effectively_installed()
|
||||
{
|
||||
return $this->db_tools->sql_table_exists($this->table_prefix . 'portal_modules');
|
||||
}
|
||||
|
||||
static public function depends_on()
|
||||
{
|
||||
return array('\phpbb\db\migration\data\v310\extensions');
|
||||
}
|
||||
|
||||
public function update_schema()
|
||||
{
|
||||
return array(
|
||||
'add_tables' => array(
|
||||
$this->table_prefix . 'portal_modules' => array(
|
||||
'COLUMNS' => array(
|
||||
'module_id' => array('UINT:3', NULL, 'auto_increment'),
|
||||
'module_classname' => array('VCHAR:64', ''),
|
||||
'module_column' => array('TINT:3', 0),
|
||||
'module_order' => array('TINT:3', 0),
|
||||
'module_name' => array('VCHAR', ''),
|
||||
'module_image_src' => array('VCHAR', ''),
|
||||
'module_image_width' => array('INT:3', 0),
|
||||
'module_image_height' => array('INT:3', 0),
|
||||
'module_group_ids' => array('VCHAR', ''),
|
||||
'module_status' => array('TINT:1', 1),
|
||||
),
|
||||
|
||||
'PRIMARY_KEY' => 'module_id',
|
||||
),
|
||||
$this->table_prefix . 'portal_config' => array(
|
||||
'COLUMNS' => array(
|
||||
'config_name' => array('VCHAR:255', ''),
|
||||
'config_value'=> array('MTEXT', ''),
|
||||
),
|
||||
|
||||
'PRIMARY_KEY' => 'config_name',
|
||||
),
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
public function revert_schema()
|
||||
{
|
||||
return array(
|
||||
'drop_tables' => array(
|
||||
$this->table_prefix . 'portal_modules',
|
||||
$this->table_prefix . 'portal_config',
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
public function update_data()
|
||||
{
|
||||
return array(
|
||||
array('config.add', array('board3_portal_version', '2.1.0b1')),
|
||||
array('config.add', array('board3_enable', 1)),
|
||||
array('config.add', array('board3_left_column', 1)),
|
||||
array('config.add', array('board3_right_column', 1)),
|
||||
array('config.add', array('board3_version_check', 1)),
|
||||
array('config.add', array('board3_forum_index', 1)),
|
||||
array('config.add', array('board3_left_column_width', 180)),
|
||||
array('config.add', array('board3_right_column_width', 180)),
|
||||
array('config.add', array('board3_phpbb_menu', 0)),
|
||||
array('config.add', array('board3_display_jumpbox', 1)),
|
||||
array('config.add', array('board3_menu_1', '')),
|
||||
array('config.add', array('board3_menu_url_new_window_1', '')),
|
||||
array('config.add', array('board3_birthdays_ahead_3', 30)),
|
||||
array('config.add', array('board3_attachments_number_6', 8)),
|
||||
array('config.add', array('board3_attach_max_length_6', 15)),
|
||||
array('config.add', array('board3_attachments_forum_ids_6', '')),
|
||||
array('config.add', array('board3_attachments_forum_exclude_6', '')),
|
||||
array('config.add', array('board3_attachments_filetype_6', '')),
|
||||
array('config.add', array('board3_attachments_exclude_6', '')),
|
||||
array('config.add', array('board3_topposters_7', 5)),
|
||||
array('config.add', array('board3_max_last_member_8', 8)),
|
||||
array('config.add', array('board3_welcome_message_10', '')),
|
||||
array('config.add', array('board3_welcome_message_uid_10', '')),
|
||||
array('config.add', array('board3_welcome_message_bitfield_10', '')),
|
||||
array('config.add', array('board3_max_topics_11', 10)),
|
||||
array('config.add', array('board3_recent_title_limit_11', 100)),
|
||||
array('config.add', array('board3_recent_forum_11', '')),
|
||||
array('config.add', array('board3_recent_exclude_forums_11', 1)),
|
||||
array('config.add', array('board3_announcements_style_12', '')),
|
||||
array('config.add', array('board3_number_of_announcements_12', 1)),
|
||||
array('config.add', array('board3_announcements_day_12', '')),
|
||||
array('config.add', array('board3_announcements_length_12', 200)),
|
||||
array('config.add', array('board3_global_announcements_forum_12', '')),
|
||||
array('config.add', array('board3_announcements_forum_exclude_12', '')),
|
||||
array('config.add', array('board3_announcements_archive_12', 1)),
|
||||
array('config.add', array('board3_announcements_permissions_12', 1)),
|
||||
array('config.add', array('board3_show_announcements_replies_views_12', 1)),
|
||||
array('config.add', array('board3_news_length_13', 250)),
|
||||
array('config.add', array('board3_news_forum_13', '')),
|
||||
array('config.add', array('board3_news_permissions_13', 1)),
|
||||
array('config.add', array('board3_number_of_news_13', 5)),
|
||||
array('config.add', array('board3_show_all_news_13', 1)),
|
||||
array('config.add', array('board3_news_exclude_13', '')),
|
||||
array('config.add', array('board3_news_archive_13', 1)),
|
||||
array('config.add', array('board3_news_show_last_13', '')),
|
||||
array('config.add', array('board3_show_news_replies_views_13', 1)),
|
||||
array('config.add', array('board3_news_style_13', 1)),
|
||||
array('config.add', array('board3_poll_allow_vote_14', 1)),
|
||||
array('config.add', array('board3_poll_topic_id_14', '')),
|
||||
array('config.add', array('board3_poll_exclude_id_14', '')),
|
||||
array('config.add', array('board3_poll_hide_14', '')),
|
||||
array('config.add', array('board3_poll_limit_14', 3)),
|
||||
array('config.add', array('board3_user_menu_register_16', 1)),
|
||||
array('config.add', array('board3_sunday_first_18', 1)),
|
||||
array('config.add', array('board3_calendar_today_color_18', '#000000')),
|
||||
array('config.add', array('board3_calendar_sunday_color_18', '#FF0000')),
|
||||
array('config.add', array('board3_long_month_18', '')),
|
||||
array('config.add', array('board3_display_events_18', '')),
|
||||
array('config.add', array('board3_events_18', '')),
|
||||
array('config.add', array('board3_events_url_new_window_18', '')),
|
||||
array('config.add', array('board3_leaders_ext_19', '')),
|
||||
array('config.add', array('board3_last_visited_bots_number_20', 1)),
|
||||
array('config.add', array('board3_links_21', '')),
|
||||
array('config.add', array('board3_links_url_new_window_21', '')),
|
||||
array('permission.add', array('u_view_portal', true)),
|
||||
array('permission.add', array('a_manage_portal', true)),
|
||||
array('permission.permission_set', array('GUESTS', 'u_view_portal', 'group')),
|
||||
array('permission.permission_set', array('REGISTERED_COPPA', 'u_view_portal', 'group')),
|
||||
array('permission.permission_set', array('GLOBAL_MODERATORS', 'u_view_portal', 'group')),
|
||||
array('permission.permission_set', array('ADMINISTRATORS', 'u_view_portal', 'group')),
|
||||
array('permission.permission_set', array('BOTS', 'u_view_portal', 'group')),
|
||||
array('permission.permission_set', array('NEWLY_REGISTERED', 'u_view_portal', 'group')),
|
||||
array('permission.permission_set', array('ADMINISTRATORS', 'a_manage_portal', 'group')),
|
||||
array('module.add', array(
|
||||
'acp',
|
||||
'ACP_CAT_DOT_MODS',
|
||||
'ACP_PORTAL',
|
||||
)),
|
||||
array('module.add', array(
|
||||
'acp',
|
||||
'ACP_PORTAL',
|
||||
array(
|
||||
'module_basename' => 'phpbb_ext_board3_portal_acp_portal_module',
|
||||
'module_mode' => 'config',
|
||||
'module_auth' => 'acl_a_manage_portal',
|
||||
'module_langname' => 'ACP_PORTAL_GENERAL_INFO',
|
||||
),
|
||||
)),
|
||||
array('module.add', array(
|
||||
'acp',
|
||||
'ACP_PORTAL',
|
||||
array(
|
||||
'module_basename' => 'phpbb_ext_board3_portal_acp_portal_module',
|
||||
'module_mode' => 'modules',
|
||||
'module_auth' => 'acl_a_manage_portal',
|
||||
'module_langname' => 'ACP_PORTAL_MODULES',
|
||||
),
|
||||
)),
|
||||
array('module.add', array(
|
||||
'acp',
|
||||
'ACP_PORTAL',
|
||||
array(
|
||||
'module_basename' => 'phpbb_ext_board3_portal_acp_portal_module',
|
||||
'module_mode' => 'upload_module',
|
||||
'module_auth' => 'acl_a_manage_portal',
|
||||
'module_langname' => 'ACP_PORTAL_UPLOAD',
|
||||
),
|
||||
)),
|
||||
|
||||
array('custom', array(array($this, 'add_portal_data'))),
|
||||
);
|
||||
}
|
||||
|
||||
public function add_portal_data()
|
||||
{
|
||||
if ($this->db_tools->sql_table_exists($this->table_prefix . 'portal_config'))
|
||||
{
|
||||
$sql = 'SELECT * FROM ' . $this->table_prefix . 'portal_config';
|
||||
$result = $this->db->sql_query_limit($sql, 1);
|
||||
$row = $this->db->sql_fetchrow($result);
|
||||
if (!empty($row))
|
||||
{
|
||||
return;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
// get the correct group IDs from the database
|
||||
$in_ary = array('GUESTS', 'REGISTERED', 'REGISTERED_COPPA');
|
||||
$groups_ary = array();
|
||||
|
||||
$sql = 'SELECT group_id, group_name FROM ' . $this->table_prefix . 'groups
|
||||
WHERE ' . $this->db->sql_in_set('group_name', $in_ary);
|
||||
$result = $this->db->sql_query($sql);
|
||||
while($row = $this->db->sql_fetchrow($result))
|
||||
{
|
||||
$groups_ary[$row['group_name']] = $row['group_id'];
|
||||
}
|
||||
|
||||
// set portal config
|
||||
$this->set_portal_config('board3_menu_array_1', serialize(array(
|
||||
array(
|
||||
'title' => 'M_CONTENT',
|
||||
'url' => '',
|
||||
'type' => '',
|
||||
'permission' => '',
|
||||
),
|
||||
array(
|
||||
'title' => 'INDEX',
|
||||
'url' => 'index.php',
|
||||
'type' => 1,
|
||||
'permission' => '',
|
||||
),
|
||||
array(
|
||||
'title' => 'SEARCH',
|
||||
'url' => 'search.php',
|
||||
'type' => 1,
|
||||
'permission' => '',
|
||||
),
|
||||
array(
|
||||
'title' => 'REGISTER',
|
||||
'url' => 'ucp.php?mode=register',
|
||||
'type' => 1,
|
||||
'permission' => $groups_ary['GUESTS'],
|
||||
),
|
||||
array(
|
||||
'title' => 'MEMBERLIST',
|
||||
'url' => 'memberlist.php',
|
||||
'type' => 1,
|
||||
'permission' => $groups_ary['REGISTERED'] . ',' . $groups_ary['REGISTERED_COPPA'],
|
||||
),
|
||||
array(
|
||||
'title' => 'THE_TEAM',
|
||||
'url' => 'memberlist.php?mode=leaders',
|
||||
'type' => 1,
|
||||
'permission' => $groups_ary['REGISTERED'] . ',' . $groups_ary['REGISTERED_COPPA'],
|
||||
),
|
||||
array(
|
||||
'title' => 'M_HELP',
|
||||
'url' => '',
|
||||
'type' => '',
|
||||
'permission' => '',
|
||||
),
|
||||
array(
|
||||
'title' => 'FAQ',
|
||||
'url' => 'faq.php',
|
||||
'type' => 1,
|
||||
'permission' => '',
|
||||
),
|
||||
array(
|
||||
'title' => 'M_BBCODE',
|
||||
'url' => 'faq.php?mode=bbcode',
|
||||
'type' => 1,
|
||||
'permission' => '',
|
||||
),
|
||||
array(
|
||||
'title' => 'M_TERMS',
|
||||
'url' => 'ucp.php?mode=terms',
|
||||
'type' => 1,
|
||||
'permission' => '',
|
||||
),
|
||||
array(
|
||||
'title' => 'M_PRV',
|
||||
'url' => 'ucp.php?mode=privacy',
|
||||
'type' => 1,
|
||||
'permission' => '',
|
||||
),
|
||||
)));
|
||||
$this->set_portal_config('board3_welcome_message_10', 'Welcome to my Community!');
|
||||
$this->set_portal_config('board3_calendar_events_18', '');
|
||||
$this->set_portal_config('board3_links_array_21', serialize(array(
|
||||
array(
|
||||
'title' => 'Board3.de',
|
||||
'url' => 'http://www.board3.de/',
|
||||
'type' => 2,
|
||||
'permission' => '',
|
||||
),
|
||||
array(
|
||||
'title' => 'phpBB.com',
|
||||
'url' => 'http://www.phpbb.com/',
|
||||
'type' => 2,
|
||||
'permission' => '',
|
||||
),
|
||||
)));
|
||||
|
||||
// Populate module table
|
||||
$board3_sql_query = array(
|
||||
array(
|
||||
'module_classname' => 'main_menu',
|
||||
'module_column' => 1,
|
||||
'module_order' => 1,
|
||||
'module_name' => 'M_MENU',
|
||||
'module_image_src' => 'portal_menu.png',
|
||||
'module_group_ids' => '',
|
||||
'module_image_width' => 16,
|
||||
'module_image_height' => 16,
|
||||
'module_status' => 1,
|
||||
),
|
||||
array(
|
||||
'module_classname' => 'stylechanger',
|
||||
'module_column' => 1,
|
||||
'module_order' => 2,
|
||||
'module_name' => 'BOARD_STYLE',
|
||||
'module_image_src' => 'portal_style.png',
|
||||
'module_group_ids' => '',
|
||||
'module_image_width' => 16,
|
||||
'module_image_height' => 16,
|
||||
'module_status' => 1,
|
||||
),
|
||||
array(
|
||||
'module_classname' => 'birthday_list',
|
||||
'module_column' => 1,
|
||||
'module_order' => 3,
|
||||
'module_name' => 'BIRTHDAYS',
|
||||
'module_image_src' => 'portal_birthday.png',
|
||||
'module_group_ids' => '',
|
||||
'module_image_width' => 16,
|
||||
'module_image_height' => 16,
|
||||
'module_status' => 1,
|
||||
),
|
||||
array(
|
||||
'module_classname' => 'clock',
|
||||
'module_column' => 1,
|
||||
'module_order' => 4,
|
||||
'module_name' => 'CLOCK',
|
||||
'module_image_src' => 'portal_clock.png',
|
||||
'module_group_ids' => '',
|
||||
'module_image_width' => 16,
|
||||
'module_image_height' => 16,
|
||||
'module_status' => 1,
|
||||
),
|
||||
array(
|
||||
'module_classname' => 'search',
|
||||
'module_column' => 1,
|
||||
'module_order' => 5,
|
||||
'module_name' => 'PORTAL_SEARCH',
|
||||
'module_image_src' => 'portal_search.png',
|
||||
'module_group_ids' => '',
|
||||
'module_image_width' => 16,
|
||||
'module_image_height' => 16,
|
||||
'module_status' => 1,
|
||||
),
|
||||
array(
|
||||
'module_classname' => 'attachments',
|
||||
'module_column' => 1,
|
||||
'module_order' => 6,
|
||||
'module_name' => 'PORTAL_ATTACHMENTS',
|
||||
'module_image_src' => 'portal_attach.png',
|
||||
'module_group_ids' => '',
|
||||
'module_image_width' => 16,
|
||||
'module_image_height' => 16,
|
||||
'module_status' => 1,
|
||||
),
|
||||
array(
|
||||
'module_classname' => 'topposters',
|
||||
'module_column' => 1,
|
||||
'module_order' => 7,
|
||||
'module_name' => 'TOPPOSTERS',
|
||||
'module_image_src' => 'portal_top_poster.png',
|
||||
'module_group_ids' => '',
|
||||
'module_image_width' => 16,
|
||||
'module_image_height' => 16,
|
||||
'module_status' => 1,
|
||||
),
|
||||
array(
|
||||
'module_classname' => 'latest_members',
|
||||
'module_column' => 1,
|
||||
'module_order' => 8,
|
||||
'module_name' => 'LATEST_MEMBERS',
|
||||
'module_image_src' => 'portal_members.png',
|
||||
'module_group_ids' => '',
|
||||
'module_image_width' => 16,
|
||||
'module_image_height' => 16,
|
||||
'module_status' => 1,
|
||||
),
|
||||
array(
|
||||
'module_classname' => 'link_us',
|
||||
'module_column' => 1,
|
||||
'module_order' => 9,
|
||||
'module_name' => 'LINK_US',
|
||||
'module_image_src' => 'portal_link_us.png',
|
||||
'module_group_ids' => '',
|
||||
'module_image_width' => 16,
|
||||
'module_image_height' => 16,
|
||||
'module_status' => 1,
|
||||
),
|
||||
array(
|
||||
'module_classname' => 'welcome',
|
||||
'module_column' => 2,
|
||||
'module_order' => 1,
|
||||
'module_name' => 'PORTAL_WELCOME',
|
||||
'module_image_src' => '',
|
||||
'module_group_ids' => '',
|
||||
'module_image_width' => 16,
|
||||
'module_image_height' => 16,
|
||||
'module_status' => 1,
|
||||
),
|
||||
array(
|
||||
'module_classname' => 'recent',
|
||||
'module_column' => 2,
|
||||
'module_order' => 2,
|
||||
'module_name' => 'PORTAL_RECENT',
|
||||
'module_image_src' => '',
|
||||
'module_group_ids' => '',
|
||||
'module_image_width' => 16,
|
||||
'module_image_height' => 16,
|
||||
'module_status' => 1,
|
||||
),
|
||||
array(
|
||||
'module_classname' => 'announcements',
|
||||
'module_column' => 2,
|
||||
'module_order' => 3,
|
||||
'module_name' => 'GLOBAL_ANNOUNCEMENTS',
|
||||
'module_image_src' => '',
|
||||
'module_group_ids' => '',
|
||||
'module_image_width' => 16,
|
||||
'module_image_height' => 16,
|
||||
'module_status' => 1,
|
||||
),
|
||||
array(
|
||||
'module_classname' => 'news',
|
||||
'module_column' => 2,
|
||||
'module_order' => 4,
|
||||
'module_name' => 'LATEST_NEWS',
|
||||
'module_image_src' => '',
|
||||
'module_group_ids' => '',
|
||||
'module_image_width' => 16,
|
||||
'module_image_height' => 16,
|
||||
'module_status' => 1,
|
||||
),
|
||||
array(
|
||||
'module_classname' => 'poll',
|
||||
'module_column' => 2,
|
||||
'module_order' => 5,
|
||||
'module_name' => 'PORTAL_POLL',
|
||||
'module_image_src' => 'portal_poll.png',
|
||||
'module_group_ids' => '',
|
||||
'module_image_width' => 16,
|
||||
'module_image_height' => 16,
|
||||
'module_status' => 1,
|
||||
),
|
||||
array(
|
||||
'module_classname' => 'whois_online',
|
||||
'module_column' => 2,
|
||||
'module_order' => 6,
|
||||
'module_name' => 'PORTAL_WHOIS_ONLINE',
|
||||
'module_image_src' => 'portal_friends.png',
|
||||
'module_group_ids' => '',
|
||||
'module_image_width' => 16,
|
||||
'module_image_height' => 16,
|
||||
'module_status' => 1,
|
||||
),
|
||||
array(
|
||||
'module_classname' => 'user_menu',
|
||||
'module_column' => 3,
|
||||
'module_order' => 1,
|
||||
'module_name' => 'USER_MENU',
|
||||
'module_image_src' => 'portal_user.png',
|
||||
'module_group_ids' => '',
|
||||
'module_image_width' => 16,
|
||||
'module_image_height' => 16,
|
||||
'module_status' => 1,
|
||||
),
|
||||
array(
|
||||
'module_classname' => 'statistics',
|
||||
'module_column' => 3,
|
||||
'module_order' => 2,
|
||||
'module_name' => 'STATISTICS',
|
||||
'module_image_src' => 'portal_statistics.png',
|
||||
'module_group_ids' => '',
|
||||
'module_image_width' => 16,
|
||||
'module_image_height' => 16,
|
||||
'module_status' => 1,
|
||||
),
|
||||
array(
|
||||
'module_classname' => 'calendar',
|
||||
'module_column' => 3,
|
||||
'module_order' => 3,
|
||||
'module_name' => 'PORTAL_CALENDAR',
|
||||
'module_image_src' => 'portal_calendar.png',
|
||||
'module_group_ids' => '',
|
||||
'module_image_width' => 16,
|
||||
'module_image_height' => 16,
|
||||
'module_status' => 1,
|
||||
),
|
||||
array(
|
||||
'module_classname' => 'leaders',
|
||||
'module_column' => 3,
|
||||
'module_order' => 4,
|
||||
'module_name' => 'THE_TEAM',
|
||||
'module_image_src' => 'portal_team.png',
|
||||
'module_group_ids' => '',
|
||||
'module_image_width' => 16,
|
||||
'module_image_height' => 16,
|
||||
'module_status' => 1,
|
||||
),
|
||||
array(
|
||||
'module_classname' => 'latest_bots',
|
||||
'module_column' => 3,
|
||||
'module_order' => 5,
|
||||
'module_name' => 'LATEST_BOTS',
|
||||
'module_image_src' => 'portal_bots.png',
|
||||
'module_group_ids' => '',
|
||||
'module_image_width' => 16,
|
||||
'module_image_height' => 16,
|
||||
'module_status' => 1,
|
||||
),
|
||||
array(
|
||||
'module_classname' => 'links',
|
||||
'module_column' => 3,
|
||||
'module_order' => 6,
|
||||
'module_name' => 'PORTAL_LINKS',
|
||||
'module_image_src' => 'portal_links.png',
|
||||
'module_group_ids' => '',
|
||||
'module_image_width' => 16,
|
||||
'module_image_height' => 16,
|
||||
'module_status' => 1,
|
||||
),
|
||||
);
|
||||
$this->db->sql_multi_insert($this->table_prefix . 'portal_modules', $board3_sql_query);
|
||||
}
|
||||
|
||||
/**
|
||||
* Set config value. Creates missing config entry.
|
||||
* Only use this if your config value might exceed 255 characters, otherwise please use set_config
|
||||
*/
|
||||
private function set_portal_config($config_name, $config_value)
|
||||
{
|
||||
$portal_config = $this->portal_config;
|
||||
|
||||
$sql = 'UPDATE ' . $this->table_prefix . "portal_config
|
||||
SET config_value = '" . $this->db->sql_escape($config_value) . "'
|
||||
WHERE config_name = '" . $this->db->sql_escape($config_name) . "'";
|
||||
$this->db->sql_query($sql);
|
||||
|
||||
if (!$this->db->sql_affectedrows() && !isset($portal_config[$config_name]))
|
||||
{
|
||||
$sql = 'INSERT INTO ' . $this->table_prefix . 'portal_config ' . $this->db->sql_build_array('INSERT', array(
|
||||
'config_name' => $config_name,
|
||||
'config_value' => $config_value));
|
||||
$this->db->sql_query($sql);
|
||||
}
|
||||
|
||||
$this->portal_config[$config_name] = $config_value;
|
||||
}
|
||||
}
|
||||
@@ -1,185 +0,0 @@
|
||||
<?php
|
||||
/**
|
||||
*
|
||||
* @package Board3 Portal v2
|
||||
* @copyright (c) Board3 Group ( www.board3.de )
|
||||
* @license http://opensource.org/licenses/gpl-license.php GNU Public License
|
||||
*
|
||||
*/
|
||||
|
||||
/**
|
||||
* @ignore
|
||||
*/
|
||||
define('IN_PHPBB', true);
|
||||
define('IN_PORTAL', true);
|
||||
|
||||
$phpbb_root_path = (defined('PHPBB_ROOT_PATH')) ? PHPBB_ROOT_PATH : './';
|
||||
$phpEx = substr(strrchr(__FILE__, '.'), 1);
|
||||
|
||||
include($phpbb_root_path . 'common.' . $phpEx);
|
||||
include($phpbb_root_path . 'includes/functions_display.' . $phpEx);
|
||||
include($phpbb_root_path . 'portal/includes/constants.' . $phpEx);
|
||||
$portal_root_path = PORTAL_ROOT_PATH;
|
||||
include($phpbb_root_path . $portal_root_path . 'includes/functions_modules.' . $phpEx);
|
||||
include($phpbb_root_path . $portal_root_path . 'includes/functions.' . $phpEx);
|
||||
|
||||
// Start session management
|
||||
$user->session_begin();
|
||||
$auth->acl($user->data);
|
||||
$user->setup('mods/portal');
|
||||
|
||||
/**
|
||||
* Make sure we do an isset first,
|
||||
* else we will get errors if someone uninstalls the portal and forgets to remove portal.php
|
||||
*/
|
||||
if (!isset($config['board3_enable']) || !$config['board3_enable'] || !$auth->acl_get('u_view_portal'))
|
||||
{
|
||||
redirect(append_sid($phpbb_root_path . 'index.' . $phpEx));
|
||||
}
|
||||
|
||||
/**
|
||||
* get initial data
|
||||
*/
|
||||
$portal_config = obtain_portal_config();
|
||||
$portal_modules = obtain_portal_modules();
|
||||
|
||||
/**
|
||||
* set up column_count array
|
||||
* with this we can hide unneeded parts of the portal
|
||||
*/
|
||||
$module_count = array(
|
||||
'total' => 0,
|
||||
'top' => 0,
|
||||
'left' => 0,
|
||||
'center' => 0,
|
||||
'right' => 0,
|
||||
'bottom' => 0,
|
||||
);
|
||||
|
||||
/**
|
||||
* start assigning block vars
|
||||
*/
|
||||
foreach ($portal_modules as $row)
|
||||
{
|
||||
if($row['module_status'] == B3_MODULE_DISABLED)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
$class_name = 'portal_' . $row['module_classname'] . '_module';
|
||||
if (!class_exists($class_name))
|
||||
{
|
||||
include("{$phpbb_root_path}{$portal_root_path}modules/portal_{$row['module_classname']}.$phpEx");
|
||||
}
|
||||
if (!class_exists($class_name))
|
||||
{
|
||||
trigger_error(sprintf($user->lang['CLASS_NOT_FOUND'], $class_name, 'portal_' . $row['module_classname']), E_USER_ERROR);
|
||||
}
|
||||
|
||||
$module = new $class_name();
|
||||
|
||||
/**
|
||||
* Check for permissions before loading anything
|
||||
* the default group of a user always defines his/her permission (KISS)
|
||||
*/
|
||||
$group_ary = (!empty($row['module_group_ids'])) ? explode(',', $row['module_group_ids']) : '';
|
||||
if ((is_array($group_ary) && !in_array($user->data['group_id'], $group_ary)))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
if ($module->language)
|
||||
{
|
||||
$user->add_lang('mods/portal/' . $module->language);
|
||||
}
|
||||
if ($row['module_column'] == column_string_num('left') && $config['board3_left_column'])
|
||||
{
|
||||
$template_module = $module->get_template_side($row['module_id']);
|
||||
$template_column = 'left';
|
||||
++$module_count['left'];
|
||||
}
|
||||
if ($row['module_column'] == column_string_num('center'))
|
||||
{
|
||||
$template_module = $module->get_template_center($row['module_id']);
|
||||
$template_column = 'center';
|
||||
++$module_count['center'];
|
||||
}
|
||||
if ($row['module_column'] == column_string_num('right') && $config['board3_right_column'])
|
||||
{
|
||||
$template_module = $module->get_template_side($row['module_id']);
|
||||
$template_column = 'right';
|
||||
++$module_count['right'];
|
||||
}
|
||||
if ($row['module_column'] == column_string_num('top'))
|
||||
{
|
||||
$template_module = $module->get_template_center($row['module_id']);
|
||||
++$module_count['top'];
|
||||
}
|
||||
if ($row['module_column'] == column_string_num('bottom'))
|
||||
{
|
||||
$template_module = $module->get_template_center($row['module_id']);
|
||||
++$module_count['bottom'];
|
||||
}
|
||||
if (!isset($template_module))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
// Custom Blocks that have been defined in the ACP will return an array instead of just the name of the template file
|
||||
if (is_array($template_module))
|
||||
{
|
||||
$template->assign_block_vars('modules_' . column_num_string($row['module_column']), array(
|
||||
'TEMPLATE_FILE' => 'portal/modules/' . $template_module['template'],
|
||||
'IMAGE_SRC' => $phpbb_root_path . 'styles/' . $user->theme['theme_path'] . '/theme/images/portal/' . $template_module['image_src'],
|
||||
'TITLE' => $template_module['title'],
|
||||
'CODE' => $template_module['code'],
|
||||
'MODULE_ID' => $row['module_id'],
|
||||
'IMAGE_WIDTH' => $row['module_image_width'],
|
||||
'IMAGE_HEIGHT' => $row['module_image_height'],
|
||||
));
|
||||
}
|
||||
else
|
||||
{
|
||||
$template->assign_block_vars('modules_' . column_num_string($row['module_column']), array(
|
||||
'TEMPLATE_FILE' => 'portal/modules/' . $template_module,
|
||||
'IMAGE_SRC' => $phpbb_root_path . 'styles/' . $user->theme['theme_path'] . '/theme/images/portal/' . $row['module_image_src'],
|
||||
'IMAGE_WIDTH' => $row['module_image_width'],
|
||||
'IMAGE_HEIGHT' => $row['module_image_height'],
|
||||
'MODULE_ID' => $row['module_id'],
|
||||
'TITLE' => (isset($user->lang[$row['module_name']])) ? $user->lang[$row['module_name']] : utf8_normalize_nfc($row['module_name']),
|
||||
));
|
||||
}
|
||||
unset($template_module);
|
||||
}
|
||||
$module_count['total'] = sizeof($portal_modules);
|
||||
|
||||
// Redirect to index if there are currently no active modules
|
||||
if($module_count['total'] < 1)
|
||||
{
|
||||
redirect(append_sid($phpbb_root_path . 'index.' . $phpEx));
|
||||
}
|
||||
|
||||
// Assign specific vars
|
||||
$template->assign_vars(array(
|
||||
// 'S_SMALL_BLOCK' => true,
|
||||
'S_PORTAL_LEFT_COLUMN' => $config['board3_left_column_width'],
|
||||
'S_PORTAL_RIGHT_COLUMN' => $config['board3_right_column_width'],
|
||||
'S_LEFT_COLUMN' => ($module_count['left'] > 0 && $config['board3_left_column']) ? true : false,
|
||||
'S_CENTER_COLUMN' => ($module_count['center'] > 0) ? true : false,
|
||||
'S_RIGHT_COLUMN' => ($module_count['right'] > 0 && $config['board3_right_column']) ? true : false,
|
||||
'S_TOP_COLUMN' => ($module_count['top'] > 0) ? true : false,
|
||||
'S_BOTTOM_COLUMN' => ($module_count['bottom'] > 0) ? true : false,
|
||||
'S_DISPLAY_PHPBB_MENU' => $config['board3_phpbb_menu'],
|
||||
'B3P_DISPLAY_JUMPBOX' => $config['board3_display_jumpbox'],
|
||||
));
|
||||
|
||||
// Output page
|
||||
page_header($user->lang['PORTAL']);
|
||||
|
||||
$template->set_filenames(array(
|
||||
'body' => 'portal/portal_body.html')
|
||||
);
|
||||
|
||||
make_jumpbox(append_sid("{$phpbb_root_path}viewforum.$phpEx"));
|
||||
|
||||
page_footer();
|
||||
@@ -1,24 +0,0 @@
|
||||
<?php
|
||||
/**
|
||||
*
|
||||
* @package Board3 Portal v2
|
||||
* @copyright (c) Board3 Group ( www.board3.de )
|
||||
* @license http://opensource.org/licenses/gpl-license.php GNU Public License
|
||||
*
|
||||
*/
|
||||
|
||||
if (!defined('IN_PHPBB'))
|
||||
{
|
||||
exit;
|
||||
}
|
||||
|
||||
global $table_prefix;
|
||||
|
||||
// Config constants
|
||||
define('B3_MODULE_DISABLED', 0);
|
||||
define('B3_MODULE_ENABLED', 1);
|
||||
|
||||
// Tables and paths
|
||||
define('PORTAL_ROOT_PATH', 'portal/');
|
||||
define('PORTAL_MODULES_TABLE', $table_prefix . 'portal_modules');
|
||||
define('PORTAL_CONFIG_TABLE', $table_prefix . 'portal_config');
|
||||
@@ -1,874 +0,0 @@
|
||||
<?php
|
||||
/**
|
||||
*
|
||||
* @package Board3 Portal v2
|
||||
* @copyright (c) Board3 Group ( www.board3.de )
|
||||
* @license http://opensource.org/licenses/gpl-license.php GNU Public License
|
||||
*
|
||||
*/
|
||||
|
||||
if (!defined('IN_PHPBB') && !defined('UMIL_AUTO') && !defined('IN_INSTALL'))
|
||||
{
|
||||
exit;
|
||||
}
|
||||
|
||||
// Get portal config
|
||||
function obtain_portal_config()
|
||||
{
|
||||
global $db, $cache, $portal_config;
|
||||
|
||||
if (($portal_config = $cache->get('portal_config')) === false)
|
||||
{
|
||||
$portal_config = $portal_cached_config = array();
|
||||
|
||||
$sql = 'SELECT config_name, config_value
|
||||
FROM ' . PORTAL_CONFIG_TABLE;
|
||||
$result = $db->sql_query($sql);
|
||||
|
||||
while ($row = $db->sql_fetchrow($result))
|
||||
{
|
||||
$portal_cached_config[$row['config_name']] = $row['config_value'];
|
||||
|
||||
$portal_config[$row['config_name']] = $row['config_value'];
|
||||
}
|
||||
$db->sql_freeresult($result);
|
||||
|
||||
$cache->put('portal_config', $portal_cached_config);
|
||||
}
|
||||
|
||||
return $portal_config;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set config value. Creates missing config entry.
|
||||
* Only use this if your config value might exceed 255 characters, otherwise please use set_config
|
||||
*/
|
||||
function set_portal_config($config_name, $config_value)
|
||||
{
|
||||
global $db, $cache, $portal_config;
|
||||
|
||||
$sql = 'UPDATE ' . PORTAL_CONFIG_TABLE . "
|
||||
SET config_value = '" . $db->sql_escape($config_value) . "'
|
||||
WHERE config_name = '" . $db->sql_escape($config_name) . "'";
|
||||
$db->sql_query($sql);
|
||||
|
||||
if (!$db->sql_affectedrows() && !isset($portal_config[$config_name]))
|
||||
{
|
||||
$sql = 'INSERT INTO ' . PORTAL_CONFIG_TABLE . ' ' . $db->sql_build_array('INSERT', array(
|
||||
'config_name' => $config_name,
|
||||
'config_value' => $config_value));
|
||||
$db->sql_query($sql);
|
||||
}
|
||||
|
||||
$portal_config[$config_name] = $config_value;
|
||||
|
||||
$cache->destroy('portal_config');
|
||||
}
|
||||
|
||||
/**
|
||||
* Get portal modules
|
||||
*/
|
||||
function obtain_portal_modules()
|
||||
{
|
||||
global $db, $cache, $portal_modules;
|
||||
|
||||
if (($portal_modules = $cache->get('portal_modules')) === false)
|
||||
{
|
||||
$portal_modules = $portal_cached_modules = array();
|
||||
|
||||
$sql = 'SELECT *
|
||||
FROM ' . PORTAL_MODULES_TABLE . '
|
||||
ORDER BY module_order ASC';
|
||||
$result = $db->sql_query($sql);
|
||||
|
||||
while ($row = $db->sql_fetchrow($result))
|
||||
{
|
||||
$portal_cached_modules[] = $row;
|
||||
|
||||
$portal_modules[] = $row;
|
||||
}
|
||||
$db->sql_freeresult($result);
|
||||
|
||||
$cache->put('portal_modules', $portal_cached_modules);
|
||||
}
|
||||
|
||||
return $portal_modules;
|
||||
}
|
||||
|
||||
// fetch post for news & announce
|
||||
function phpbb_fetch_posts($module_id, $forum_from, $permissions, $number_of_posts, $text_length, $time, $type, $start = 0, $invert = false)
|
||||
{
|
||||
global $db, $phpbb_root_path, $auth, $user, $bbcode_bitfield, $bbcode, $portal_config, $config;
|
||||
|
||||
$posts = $update_count = array();
|
||||
$post_time = ($time == 0) ? '' : 'AND t.topic_time > ' . (time() - $time * 86400);
|
||||
$forum_from = (strpos($forum_from, ',') !== FALSE) ? explode(',', $forum_from) : (($forum_from != '') ? array($forum_from) : array());
|
||||
$str_where = '';
|
||||
$topic_icons = array(0);
|
||||
$have_icons = 0;
|
||||
|
||||
if ($permissions == true)
|
||||
{
|
||||
$disallow_access = array_unique(array_keys($auth->acl_getf('!f_read', true)));
|
||||
}
|
||||
else
|
||||
{
|
||||
$disallow_access = array();
|
||||
}
|
||||
|
||||
if ($invert == true)
|
||||
{
|
||||
$disallow_access = array_merge($disallow_access, $forum_from);
|
||||
$forum_from = array();
|
||||
}
|
||||
|
||||
$global_f = 0;
|
||||
|
||||
if (sizeof($forum_from))
|
||||
{
|
||||
$disallow_access = array_diff($forum_from, $disallow_access);
|
||||
if (!sizeof($disallow_access))
|
||||
{
|
||||
return array();
|
||||
}
|
||||
|
||||
foreach ($disallow_access as $acc_id)
|
||||
{
|
||||
$acc_id = (int) $acc_id;
|
||||
$str_where .= "t.forum_id = $acc_id OR ";
|
||||
if ($type == 'announcements' && $global_f < 1 && $acc_id > 0)
|
||||
{
|
||||
$global_f = $acc_id;
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
foreach ($disallow_access as $acc_id)
|
||||
{
|
||||
$acc_id = (int) $acc_id;
|
||||
$str_where .= "t.forum_id <> $acc_id AND ";
|
||||
}
|
||||
}
|
||||
|
||||
switch($type)
|
||||
{
|
||||
case "announcements":
|
||||
$topic_type = '((t.topic_type = ' . POST_ANNOUNCE . ') OR (t.topic_type = ' . POST_GLOBAL . '))';
|
||||
$str_where = (strlen($str_where) > 0) ? 'AND (t.forum_id = 0 OR (' . trim(substr($str_where, 0, -4)) . '))' : '';
|
||||
$user_link = 't.topic_poster = u.user_id';
|
||||
$post_link = 't.topic_first_post_id = p.post_id';
|
||||
$topic_order = 't.topic_time DESC';
|
||||
break;
|
||||
case "news":
|
||||
$topic_type = 't.topic_type = ' . POST_NORMAL;
|
||||
$str_where = (strlen($str_where) > 0) ? 'AND (' . trim(substr($str_where, 0, -4)) . ')' : '';
|
||||
$user_link = ($config['board3_news_style_' . $module_id]) ? 't.topic_poster = u.user_id' : (($config['board3_news_show_last_' . $module_id]) ? 't.topic_last_poster_id = u.user_id' : 't.topic_poster = u.user_id' ) ;
|
||||
$post_link = ($config['board3_news_style_' . $module_id]) ? 't.topic_first_post_id = p.post_id' : (($config['board3_news_show_last_' . $module_id]) ? 't.topic_last_post_id = p.post_id' : 't.topic_first_post_id = p.post_id' ) ;
|
||||
$topic_order = ($config['board3_news_show_last_' . $module_id]) ? 't.topic_last_post_time DESC' : 't.topic_time DESC' ;
|
||||
break;
|
||||
case "news_all":
|
||||
$topic_type = '(t.topic_type <> ' . POST_ANNOUNCE . ') AND (t.topic_type <> ' . POST_GLOBAL . ')';
|
||||
$str_where = (strlen($str_where) > 0) ? 'AND (' . trim(substr($str_where, 0, -4)) . ')' : '';
|
||||
$user_link = ($config['board3_news_style_' . $module_id]) ? 't.topic_poster = u.user_id' : (($config['board3_news_show_last_' . $module_id]) ? 't.topic_last_poster_id = u.user_id' : 't.topic_poster = u.user_id' ) ;
|
||||
$post_link = ($config['board3_news_style_' . $module_id]) ? 't.topic_first_post_id = p.post_id' : (($config['board3_news_show_last_' . $module_id]) ? 't.topic_last_post_id = p.post_id' : 't.topic_first_post_id = p.post_id' ) ;
|
||||
$topic_order = ($config['board3_news_show_last_' . $module_id]) ? 't.topic_last_post_time DESC' : 't.topic_time DESC' ;
|
||||
break;
|
||||
|
||||
default:
|
||||
$topic_type = $str_where = $user_link = $post_link = '';
|
||||
$topic_order = 't.topic_time DESC';
|
||||
// maybe use trigger_error here, as this shouldn't happen
|
||||
}
|
||||
|
||||
if ($type == 'announcements' && $global_f < 1)
|
||||
{
|
||||
$sql = 'SELECT
|
||||
forum_id
|
||||
FROM
|
||||
' . FORUMS_TABLE . '
|
||||
WHERE
|
||||
forum_type = ' . FORUM_POST . '
|
||||
' . str_replace('t.', '', $str_where) . '
|
||||
ORDER BY
|
||||
forum_id';
|
||||
$result = $db->sql_query_limit($sql, 1);
|
||||
$row = $db->sql_fetchrow($result);
|
||||
$db->sql_freeresult($result);
|
||||
|
||||
if (!sizeof($row))
|
||||
{
|
||||
return array();
|
||||
}
|
||||
$global_f = $row['forum_id'];
|
||||
}
|
||||
|
||||
$sql_array = array(
|
||||
'SELECT' => 't.forum_id,
|
||||
t.topic_id,
|
||||
t.topic_last_post_id,
|
||||
t.topic_last_post_time,
|
||||
t.topic_time,
|
||||
t.topic_title,
|
||||
t.topic_attachment,
|
||||
t.topic_views,
|
||||
t.poll_title,
|
||||
t.topic_posts_approved,
|
||||
t.topic_posts_unapproved,
|
||||
t.topic_posts_softdeleted,
|
||||
t.topic_poster,
|
||||
t.topic_type,
|
||||
t.topic_status,
|
||||
t.topic_last_poster_name,
|
||||
t.topic_last_poster_id,
|
||||
t.topic_last_poster_colour,
|
||||
t.icon_id,
|
||||
u.username,
|
||||
u.user_id,
|
||||
u.user_type,
|
||||
u.user_colour,
|
||||
p.post_id,
|
||||
p.poster_id,
|
||||
p.post_time,
|
||||
p.post_text,
|
||||
p.post_attachment,
|
||||
p.post_username,
|
||||
p.enable_smilies,
|
||||
p.enable_bbcode,
|
||||
p.enable_magic_url,
|
||||
p.bbcode_bitfield,
|
||||
p.bbcode_uid,
|
||||
f.forum_name,
|
||||
f.enable_icons',
|
||||
'FROM' => array(
|
||||
TOPICS_TABLE => 't',
|
||||
),
|
||||
'LEFT_JOIN' => array(
|
||||
array(
|
||||
'FROM' => array(USERS_TABLE => 'u'),
|
||||
'ON' => $user_link,
|
||||
),
|
||||
array(
|
||||
'FROM' => array(FORUMS_TABLE => 'f'),
|
||||
'ON' => 't.forum_id=f.forum_id',
|
||||
),
|
||||
array(
|
||||
'FROM' => array(POSTS_TABLE => 'p'),
|
||||
'ON' => $post_link,
|
||||
),
|
||||
),
|
||||
'WHERE' => $topic_type . '
|
||||
' . $post_time . '
|
||||
AND t.topic_status <> ' . ITEM_MOVED . '
|
||||
AND t.topic_visibility = 1
|
||||
AND t.topic_moved_id = 0
|
||||
' . $str_where,
|
||||
'ORDER_BY' => $topic_order,
|
||||
);
|
||||
|
||||
$sql_array['LEFT_JOIN'][] = array('FROM' => array(TOPICS_POSTED_TABLE => 'tp'), 'ON' => 'tp.topic_id = t.topic_id AND tp.user_id = ' . $user->data['user_id']);
|
||||
$sql_array['SELECT'] .= ', tp.topic_posted';
|
||||
$sql = $db->sql_build_query('SELECT', $sql_array);
|
||||
|
||||
if ($number_of_posts != 0)
|
||||
{
|
||||
$result = $db->sql_query_limit($sql, $number_of_posts, $start);
|
||||
}
|
||||
else
|
||||
{
|
||||
$result = $db->sql_query($sql);
|
||||
}
|
||||
|
||||
$i = 0;
|
||||
|
||||
while ($row = $db->sql_fetchrow($result))
|
||||
{
|
||||
$attachments = array();
|
||||
if (($auth->acl_get('u_download') && ($auth->acl_get('f_download', $row['forum_id']) || $row['forum_id'] == 0)) && $config['allow_attachments'] && $row['post_id'] && $row['post_attachment'])
|
||||
{
|
||||
// Pull attachment data
|
||||
$sql2 = 'SELECT *
|
||||
FROM ' . ATTACHMENTS_TABLE . '
|
||||
WHERE post_msg_id = '. $row['post_id'] .'
|
||||
AND in_message = 0
|
||||
ORDER BY filetime DESC';
|
||||
$result2 = $db->sql_query($sql2);
|
||||
|
||||
while ($row2 = $db->sql_fetchrow($result2))
|
||||
{
|
||||
$attachments[] = $row2;
|
||||
}
|
||||
$db->sql_freeresult($result2);
|
||||
}
|
||||
|
||||
$posts[$i]['bbcode_uid'] = $row['bbcode_uid'];
|
||||
$len_check = $row['post_text'];
|
||||
$maxlen = $text_length;
|
||||
|
||||
if (($text_length != 0) && (strlen($len_check) > $text_length))
|
||||
{
|
||||
$message = str_replace(array("\n", "\r"), array('<br />', "\n"), $row['post_text']);
|
||||
$message = get_sub_taged_string($message, $row['bbcode_uid'], $maxlen);
|
||||
$posts[$i]['striped'] = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
$message = str_replace("\n", '<br/> ', $row['post_text']);
|
||||
}
|
||||
|
||||
$row['bbcode_options'] = (($row['enable_bbcode']) ? OPTION_FLAG_BBCODE : 0) + (($row['enable_smilies']) ? OPTION_FLAG_SMILIES : 0) + (($row['enable_magic_url']) ? OPTION_FLAG_LINKS : 0);
|
||||
$message = generate_text_for_display($message, $row['bbcode_uid'], $row['bbcode_bitfield'], $row['bbcode_options']);
|
||||
|
||||
if (!empty($attachments))
|
||||
{
|
||||
parse_attachments($row['forum_id'], $message, $attachments, $update_count);
|
||||
}
|
||||
|
||||
if ($global_f < 1)
|
||||
{
|
||||
$global_f = $row['forum_id'];
|
||||
}
|
||||
|
||||
$topic_icons[] = $row['enable_icons'];
|
||||
$have_icons = ($row['icon_id'] > 0) ? 1 : $have_icons;
|
||||
|
||||
$posts[$i] = array_merge($posts[$i], array(
|
||||
'post_text' => ap_validate($message),
|
||||
'topic_id' => $row['topic_id'],
|
||||
'topic_last_post_id' => $row['topic_last_post_id'],
|
||||
'topic_type' => $row['topic_type'],
|
||||
'topic_posted' => (isset($row['topic_posted']) && $row['topic_posted']) ? true : false,
|
||||
'icon_id' => $row['icon_id'],
|
||||
'topic_status' => $row['topic_status'],
|
||||
'forum_id' => $row['forum_id'],
|
||||
'topic_replies' => $row['topic_posts_approved'] + $row['topic_posts_unapproved'] + $row['topic_posts_softdeleted'],
|
||||
'topic_replies_real' => $row['topic_posts_approved'],
|
||||
'topic_time' => $user->format_date($row['post_time']),
|
||||
'topic_last_post_time' => $row['topic_last_post_time'],
|
||||
'topic_title' => $row['topic_title'],
|
||||
'username' => $row['username'],
|
||||
'username_full' => get_username_string('full', $row['user_id'], $row['username'], $row['user_colour'], $row['post_username']),
|
||||
'username_full_last' => get_username_string('full', $row['topic_last_poster_id'], $row['topic_last_poster_name'], $row['topic_last_poster_colour'], $row['topic_last_poster_name']),
|
||||
'user_id' => $row['user_id'],
|
||||
'user_type' => $row['user_type'],
|
||||
'user_colour' => $row['user_colour'],
|
||||
'poll' => ($row['poll_title']) ? true : false,
|
||||
'attachment' => ($row['topic_attachment']) ? true : false,
|
||||
'topic_views' => $row['topic_views'],
|
||||
'forum_name' => $row['forum_name'],
|
||||
'attachments' => (!empty($attachments)) ? $attachments : array(),
|
||||
));
|
||||
$posts['global_id'] = $global_f;
|
||||
++$i;
|
||||
}
|
||||
$db->sql_freeresult($result);
|
||||
|
||||
$posts['topic_icons'] = ((max($topic_icons) > 0) && $have_icons) ? true : false;
|
||||
$posts['topic_count'] = $i;
|
||||
|
||||
if ($global_f < 1)
|
||||
{
|
||||
return array();
|
||||
}
|
||||
else
|
||||
{
|
||||
return $posts;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Censor title, return short title
|
||||
*
|
||||
* @param $title string title to censor
|
||||
* @param $limit int short title character limit
|
||||
*
|
||||
*/
|
||||
function character_limit(&$title, $limit = 0)
|
||||
{
|
||||
$title = censor_text($title);
|
||||
if ($limit > 0)
|
||||
{
|
||||
return (strlen(utf8_decode($title)) > $limit + 3) ? truncate_string($title, $limit) . '...' : $title;
|
||||
}
|
||||
else
|
||||
{
|
||||
return $title;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Cut post text to given length
|
||||
*
|
||||
* @param $message string post text
|
||||
* @param $bbcode_uid string bbcode uid
|
||||
* @param $length int The desired length
|
||||
*/
|
||||
function get_sub_taged_string($message, $bbcode_uid, $length)
|
||||
{
|
||||
global $portal_root_path, $phpEx;
|
||||
|
||||
if(!class_exists('phpbb_trim_message'))
|
||||
{
|
||||
include($portal_root_path . 'includes/trim_message/trim_message.' . $phpEx);
|
||||
}
|
||||
|
||||
if(!class_exists('phpbb_trim_message_bbcodes'))
|
||||
{
|
||||
include($portal_root_path . 'includes/trim_message/bbcodes.' . $phpEx);
|
||||
}
|
||||
|
||||
$object = new phpbb_trim_message($message, $bbcode_uid, $length);
|
||||
// Ready to get parsed:
|
||||
return $object->message();
|
||||
}
|
||||
|
||||
function ap_validate($str)
|
||||
{
|
||||
$s = str_replace('<br />', '<br/>', $str);
|
||||
return str_replace('</li><br/>', '</li>', $s);
|
||||
}
|
||||
|
||||
/**
|
||||
* Pagination routine, generates archive number sequence
|
||||
*/
|
||||
function generate_portal_pagination($base_url, $num_items, $per_page, $start_item, $type, $add_prevnext_text = false, $tpl_prefix = '')
|
||||
{
|
||||
global $template, $user;
|
||||
|
||||
switch($type)
|
||||
{
|
||||
case "announcements":
|
||||
$pagination_type = 'ap';
|
||||
$anker = '#a';
|
||||
break;
|
||||
case "news":
|
||||
case "news_all":
|
||||
$pagination_type = 'np';
|
||||
$anker = '#n';
|
||||
break;
|
||||
|
||||
default:
|
||||
// this shouldn't happend @todo: use trigger_error()
|
||||
$pagination_type = 'ap';
|
||||
$anker = '#a';
|
||||
}
|
||||
|
||||
// Make sure $per_page is a valid value
|
||||
$per_page = ($per_page <= 0) ? 1 : $per_page;
|
||||
|
||||
$seperator = '<span class="page-sep">' . $user->lang['COMMA_SEPARATOR'] . '</span>';
|
||||
$total_pages = ceil($num_items / $per_page);
|
||||
|
||||
if ($total_pages == 1 || !$num_items)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
$on_page = floor($start_item / $per_page) + 1;
|
||||
$url_delim = (strpos($base_url, '?') === false) ? '?' : '&';
|
||||
|
||||
$page_string = ($on_page == 1) ? '<strong>1</strong>' : '<a href="' . $base_url . $anker .'">1</a>';
|
||||
|
||||
if ($total_pages > 5)
|
||||
{
|
||||
$start_cnt = min(max(1, $on_page - 4), $total_pages - 5);
|
||||
$end_cnt = max(min($total_pages, $on_page + 4), 6);
|
||||
|
||||
$page_string .= ($start_cnt > 1) ? ' ... ' : $seperator;
|
||||
|
||||
for ($i = $start_cnt + 1; $i < $end_cnt; ++$i)
|
||||
{
|
||||
$page_string .= ($i == $on_page) ? '<strong>' . $i . '</strong>' : '<a href="' . $base_url . "{$url_delim}" . $pagination_type . '=' . (($i - 1) * $per_page) . $anker . '">' . $i . '</a>';
|
||||
if ($i < $end_cnt - 1)
|
||||
{
|
||||
$page_string .= $seperator;
|
||||
}
|
||||
}
|
||||
$page_string .= ($end_cnt < $total_pages) ? ' ... ' : $seperator;
|
||||
}
|
||||
else
|
||||
{
|
||||
$page_string .= $seperator;
|
||||
|
||||
for ($i = 2; $i < $total_pages; ++$i)
|
||||
{
|
||||
$page_string .= ($i == $on_page) ? '<strong>' . $i . '</strong>' : '<a href="' . $base_url . "{$url_delim}" . $pagination_type . '=' . (($i - 1) * $per_page) . $anker . '">' . $i . '</a>';
|
||||
if ($i < $total_pages)
|
||||
{
|
||||
$page_string .= $seperator;
|
||||
}
|
||||
}
|
||||
}
|
||||
$page_string .= ($on_page == $total_pages) ? '<strong>' . $total_pages . '</strong>' : '<a href="' . $base_url . "{$url_delim}" . $pagination_type . '=' . (($total_pages - 1) * $per_page) . $anker . '">' . $total_pages . '</a>';
|
||||
|
||||
if ($add_prevnext_text)
|
||||
{
|
||||
if ($on_page != 1)
|
||||
{
|
||||
$page_string = '<a href="' . $base_url . "{$url_delim}" . $pagination_type . '=' . (($on_page - 2) * $per_page) . $anker . '">' . $user->lang['PREVIOUS'] . '</a> ' . $page_string;
|
||||
}
|
||||
|
||||
if ($on_page != $total_pages)
|
||||
{
|
||||
$page_string .= ' <a href="' . $base_url . "{$url_delim}" . $pagination_type . '=' . ($on_page * $per_page) . $anker . '">' . $user->lang['NEXT'] . '</a>';
|
||||
}
|
||||
}
|
||||
|
||||
$template->assign_vars(array(
|
||||
$tpl_prefix . 'BASE_URL' => $base_url,
|
||||
'A_' . $tpl_prefix . 'BASE_URL' => addslashes($base_url),
|
||||
$tpl_prefix . 'PER_PAGE' => $per_page,
|
||||
|
||||
$tpl_prefix . 'PREVIOUS_PAGE' => ($on_page == 1) ? '' : $base_url . "{$url_delim}" . $pagination_type . '=' . (($on_page - 2) * $per_page) . $anker,
|
||||
$tpl_prefix . 'NEXT_PAGE' => ($on_page == $total_pages) ? '' : $base_url . "{$url_delim}" . $pagination_type . '=' . ($on_page * $per_page) . $anker,
|
||||
$tpl_prefix . 'TOTAL_PAGES' => $total_pages,
|
||||
));
|
||||
|
||||
return $page_string;
|
||||
}
|
||||
|
||||
/**
|
||||
* Check if table exists
|
||||
* @copyright (c) 2007 phpBB Group
|
||||
*
|
||||
* @param string $table_name The table name to check for
|
||||
* @return bool true if table exists, else false
|
||||
*/
|
||||
function sql_table_exists($table_name)
|
||||
{
|
||||
global $db;
|
||||
$db->sql_return_on_error(true);
|
||||
$result = $db->sql_query_limit('SELECT * FROM ' . $db->sql_escape($table_name), 1);
|
||||
$db->sql_return_on_error(false);
|
||||
|
||||
if ($result)
|
||||
{
|
||||
$db->sql_freeresult($result);
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* get topic tracking info for news
|
||||
* based on get_complete_tracking_info of phpBB3
|
||||
* this should reduce the queries for the news and announcements block
|
||||
*/
|
||||
function get_portal_tracking_info($fetch_news)
|
||||
{
|
||||
global $config, $user;
|
||||
|
||||
$last_read = $topic_ids = $forum_ids = $tracking_info = $rev_forum_ids = array();
|
||||
|
||||
/**
|
||||
* group everything by the forum IDs
|
||||
*/
|
||||
$count = $fetch_news['topic_count'];
|
||||
for ($i = 0; $i < $count; ++$i)
|
||||
{
|
||||
$tracking_info[$fetch_news[$i]['forum_id']][] = $fetch_news[$i]['topic_id'];
|
||||
$topic_ids[] = $fetch_news[$i]['topic_id'];
|
||||
$forum_ids[] = $fetch_news[$i]['forum_id'];
|
||||
$rev_forum_ids[$fetch_news[$i]['topic_id']] = $fetch_news[$i]['forum_id']; // the other way round also helps
|
||||
}
|
||||
|
||||
foreach ($tracking_info as $forum_id => $current_forum)
|
||||
{
|
||||
if ($config['load_db_lastread'] && $user->data['is_registered'])
|
||||
{
|
||||
global $db;
|
||||
|
||||
$mark_time = array();
|
||||
|
||||
$sql = 'SELECT topic_id, mark_time
|
||||
FROM ' . TOPICS_TRACK_TABLE . "
|
||||
WHERE user_id = {$user->data['user_id']}
|
||||
AND " . $db->sql_in_set('topic_id', $current_forum);
|
||||
$result = $db->sql_query($sql);
|
||||
|
||||
while ($row = $db->sql_fetchrow($result))
|
||||
{
|
||||
$last_read[$row['topic_id']] = $row['mark_time'];
|
||||
}
|
||||
$db->sql_freeresult($result);
|
||||
|
||||
$current_forum = array_diff($current_forum, array_keys($last_read));
|
||||
|
||||
if (sizeof($topic_ids))
|
||||
{
|
||||
$sql = 'SELECT forum_id, mark_time
|
||||
FROM ' . FORUMS_TRACK_TABLE . "
|
||||
WHERE user_id = {$user->data['user_id']}
|
||||
AND " . $db->sql_in_set('forum_id', $forum_ids);
|
||||
$result = $db->sql_query($sql);
|
||||
|
||||
while ($row = $db->sql_fetchrow($result))
|
||||
{
|
||||
$mark_time[$row['forum_id']] = $row['mark_time'];
|
||||
}
|
||||
$db->sql_freeresult($result);
|
||||
|
||||
// @todo: do not use $current_forum here as this is already used by the outside foreach
|
||||
foreach($forum_ids as $current_forum)
|
||||
{
|
||||
$user_lastmark[$current_forum] = (isset($mark_time[$current_forum])) ? $mark_time[$current_forum] : $user->data['user_lastmark'];
|
||||
}
|
||||
|
||||
// @todo: also check if $user_lastmark has been defined for this specific forum_id
|
||||
foreach ($topic_ids as $topic_id)
|
||||
{
|
||||
$last_read[$topic_id] = (!isset($last_read[$topic_id]) || $user_lastmark[$rev_forum_ids[$topic_id]] > $last_read[$topic_id]) ? $user_lastmark[$rev_forum_ids[$topic_id]] : $last_read[$topic_id];
|
||||
}
|
||||
}
|
||||
}
|
||||
else if ($config['load_anon_lastread'] || $user->data['is_registered'])
|
||||
{
|
||||
global $tracking_topics;
|
||||
|
||||
if (!isset($tracking_topics) || !sizeof($tracking_topics))
|
||||
{
|
||||
$tracking_topics = (isset($_COOKIE[$config['cookie_name'] . '_track'])) ? ((STRIP) ? stripslashes($_COOKIE[$config['cookie_name'] . '_track']) : $_COOKIE[$config['cookie_name'] . '_track']) : '';
|
||||
$tracking_topics = ($tracking_topics) ? tracking_unserialize($tracking_topics) : array();
|
||||
}
|
||||
|
||||
if (!$user->data['is_registered'])
|
||||
{
|
||||
$user_lastmark = (isset($tracking_topics['l'])) ? base_convert($tracking_topics['l'], 36, 10) + $config['board_startdate'] : 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
$user_lastmark = $user->data['user_lastmark'];
|
||||
}
|
||||
|
||||
foreach ($topic_ids as $topic_id)
|
||||
{
|
||||
$topic_id36 = base_convert($topic_id, 10, 36);
|
||||
|
||||
if (isset($tracking_topics['t'][$topic_id36]))
|
||||
{
|
||||
$last_read[$topic_id] = base_convert($tracking_topics['t'][$topic_id36], 36, 10) + $config['board_startdate'];
|
||||
}
|
||||
}
|
||||
|
||||
$topic_ids = array_diff($topic_ids, array_keys($last_read));
|
||||
|
||||
if (sizeof($topic_ids))
|
||||
{
|
||||
$mark_time = array();
|
||||
|
||||
if (isset($tracking_topics['f'][$forum_id]))
|
||||
{
|
||||
$mark_time[$forum_id] = base_convert($tracking_topics['f'][$forum_id], 36, 10) + $config['board_startdate'];
|
||||
}
|
||||
|
||||
$user_lastmark = (isset($mark_time[$forum_id])) ? $mark_time[$forum_id] : $user_lastmark;
|
||||
|
||||
foreach ($topic_ids as $topic_id)
|
||||
{
|
||||
$last_read[$topic_id] = $user_lastmark;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return $last_read;
|
||||
}
|
||||
|
||||
/**
|
||||
* This function will install the basic set of portal modules
|
||||
*
|
||||
* only set $purge_modules to false if you already know that the table is empty
|
||||
* set $u_action to where the user should be redirected after this
|
||||
* note that already existing data won't be deleted from the config and portal_config
|
||||
* just to make sure we don't overwrite anything, the IDs won't be reset
|
||||
* !! this function should usually only be executed once upon installing the portal !!
|
||||
* DO NOT set $purge_modules to false unless you want to auto-add all modules again after deleting them (i.e. if your database was corrupted)
|
||||
*/
|
||||
function board3_basic_install($mode = 'install', $purge_modules = true, $u_action = '')
|
||||
{
|
||||
global $db, $phpbb_root_path, $phpEx, $cache, $user, $table_prefix, $config;
|
||||
|
||||
// Shouldn't happen but we should check this nonetheless
|
||||
if (!defined('PORTAL_MODULES_TABLE'))
|
||||
{
|
||||
include($phpbb_root_path . 'portal/includes/constants.' . $phpEx);
|
||||
}
|
||||
|
||||
if ($mode == 'install')
|
||||
{
|
||||
$directory = $phpbb_root_path . 'portal/modules/';
|
||||
|
||||
if ($purge_modules)
|
||||
{
|
||||
$sql = 'DELETE FROM ' . PORTAL_MODULES_TABLE;
|
||||
$result = $db->sql_query($sql);
|
||||
$db->sql_freeresult($result);
|
||||
}
|
||||
|
||||
/*
|
||||
* this is a list of the basic modules that will be installed
|
||||
* module_name => array(module_column, module_order)
|
||||
*/
|
||||
$modules_ary = array(
|
||||
// left column
|
||||
'portal_main_menu' => array(1, 1),
|
||||
'portal_stylechanger' => array(1, 2),
|
||||
'portal_birthday_list' => array(1, 3),
|
||||
'portal_clock' => array(1, 4),
|
||||
'portal_search' => array(1, 5),
|
||||
'portal_attachments' => array(1, 7),
|
||||
'portal_topposters' => array(1, 8),
|
||||
'portal_latest_members' => array(1, 9),
|
||||
'portal_link_us' => array(1, 10),
|
||||
|
||||
// center column
|
||||
'portal_welcome' => array(2, 1),
|
||||
'portal_recent' => array(2, 2),
|
||||
'portal_announcements' => array(2, 3),
|
||||
'portal_news' => array(2, 4),
|
||||
'portal_poll' => array(2, 5),
|
||||
'portal_whois_online' => array(2, 6),
|
||||
|
||||
// right column
|
||||
'portal_user_menu' => array(3, 1),
|
||||
'portal_statistics' => array(3, 2),
|
||||
'portal_calendar' => array(3, 3),
|
||||
'portal_leaders' => array(3, 4),
|
||||
'portal_latest_bots' => array(3, 5),
|
||||
'portal_links' => array(3, 6),
|
||||
);
|
||||
|
||||
foreach ($modules_ary as $module_name => $module_data)
|
||||
{
|
||||
$class_name = $module_name . '_module';
|
||||
if (!class_exists($class_name))
|
||||
{
|
||||
include($directory . $module_name . '.' . $phpEx);
|
||||
}
|
||||
if (!class_exists($class_name))
|
||||
{
|
||||
trigger_error('CLASS_NOT_FOUND', E_USER_ERROR);
|
||||
}
|
||||
|
||||
$c_class = new $class_name();
|
||||
|
||||
$sql_ary = array(
|
||||
'module_classname' => substr($module_name, 7),
|
||||
'module_column' => $module_data[0],
|
||||
'module_order' => $module_data[1],
|
||||
'module_name' => $c_class->name,
|
||||
'module_image_src' => $c_class->image_src,
|
||||
'module_group_ids' => '',
|
||||
'module_image_width' => 16,
|
||||
'module_image_height' => 16,
|
||||
'module_status' => B3_MODULE_ENABLED,
|
||||
);
|
||||
$sql = 'INSERT INTO ' . PORTAL_MODULES_TABLE . ' ' . $db->sql_build_array('INSERT', $sql_ary);
|
||||
$db->sql_query($sql);
|
||||
|
||||
$c_class->install($db->sql_nextid());
|
||||
}
|
||||
|
||||
// Make sure we get rid of old data
|
||||
$cache->destroy('portal_modules');
|
||||
|
||||
return $user->lang['PORTAL_BASIC_INSTALL'];
|
||||
}
|
||||
else
|
||||
{
|
||||
$skip_entries = array(
|
||||
'board3_right_column_width',
|
||||
'board3_left_column_width',
|
||||
'board3_forum_index',
|
||||
'board3_version_check',
|
||||
'board3_right_column',
|
||||
'board3_left_column',
|
||||
'board3_enable',
|
||||
'board3_portal_version',
|
||||
'board3_phpbb_menu',
|
||||
'board3_display_jumpbox',
|
||||
);
|
||||
$sql = 'DELETE FROM ' . CONFIG_TABLE . ' WHERE config_name ' . $db->sql_like_expression(utf8_clean_string('board3_') . $db->any_char) . '
|
||||
AND ' . $db->sql_in_set('config_name', $skip_entries, true);
|
||||
$db->sql_query($sql);
|
||||
|
||||
return $user->lang['PORTAL_BASIC_UNINSTALL'];
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* check if the entered source file actually exists
|
||||
*/
|
||||
function check_file_src($value, $key, $module_id, $force_error = true)
|
||||
{
|
||||
global $db, $phpbb_root_path, $phpEx, $user;
|
||||
|
||||
$error = '';
|
||||
|
||||
// We check if the chosen file is present in all active styles
|
||||
$sql = 'SELECT st.theme_path
|
||||
FROM ' . STYLES_THEME_TABLE . ' st
|
||||
LEFT JOIN ' . STYLES_TABLE . ' s
|
||||
ON (st.theme_id = s.style_id)
|
||||
WHERE s.style_active = 1';
|
||||
|
||||
$result = $db->sql_query($sql);
|
||||
while ($row = $db->sql_fetchrow($result))
|
||||
{
|
||||
if (!file_exists($phpbb_root_path . 'styles/' . $row['theme_path'] . '/theme/images/portal/' . $value))
|
||||
{
|
||||
$error .= $user->lang['B3P_FILE_NOT_FOUND'] . ': styles/' . $row['theme_path'] . '/theme/images/portal/' . $value . '<br />';
|
||||
}
|
||||
}
|
||||
$db->sql_freeresult($result);
|
||||
|
||||
if (!empty($error))
|
||||
{
|
||||
if ($force_error)
|
||||
{
|
||||
trigger_error($error . adm_back_link(append_sid("{$phpbb_root_path}adm/index.$phpEx", 'i=portal&mode=config&module_id=' . $module_id)), E_USER_WARNING );
|
||||
}
|
||||
else
|
||||
{
|
||||
return $error;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the groups a user is in
|
||||
*
|
||||
* @return array Array containing the user's groups
|
||||
*/
|
||||
function get_user_groups()
|
||||
{
|
||||
global $cache, $db, $user;
|
||||
|
||||
$groups_ary = $cache->get('_user_groups_' . $user->data['user_id']);
|
||||
|
||||
if ($groups_ary === false)
|
||||
{
|
||||
// get user's groups
|
||||
$sql = 'SELECT group_id
|
||||
FROM ' . USER_GROUP_TABLE . '
|
||||
WHERE user_id = ' . (int) $user->data['user_id'] . '
|
||||
ORDER BY group_id ASC';
|
||||
$result = $db->sql_query($sql);
|
||||
while($row = $db->sql_fetchrow($result))
|
||||
{
|
||||
$groups_ary[] = $row['group_id'];
|
||||
}
|
||||
$db->sql_freeresult($result);
|
||||
|
||||
// save data in cache for 60 seconds
|
||||
$cache->put('_user_groups_' . $user->data['user_id'], $groups_ary, 60);
|
||||
}
|
||||
|
||||
return $groups_ary;
|
||||
}
|
||||
@@ -1,70 +0,0 @@
|
||||
<?php
|
||||
/**
|
||||
*
|
||||
* @package Board3 Portal v2
|
||||
* @copyright (c) Board3 Group ( www.board3.de )
|
||||
* @license http://opensource.org/licenses/gpl-license.php GNU Public License
|
||||
*
|
||||
*/
|
||||
|
||||
if (!defined('IN_PHPBB'))
|
||||
{
|
||||
exit;
|
||||
}
|
||||
|
||||
function column_num_string($column)
|
||||
{
|
||||
switch ($column)
|
||||
{
|
||||
case 1:
|
||||
return 'left';
|
||||
case 2:
|
||||
return 'center';
|
||||
case 3:
|
||||
return 'right';
|
||||
case 4:
|
||||
return 'top';
|
||||
case 5:
|
||||
return 'bottom';
|
||||
default:
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
function column_string_num($column)
|
||||
{
|
||||
switch ($column)
|
||||
{
|
||||
case 'left':
|
||||
return 1;
|
||||
case 'center':
|
||||
return 2;
|
||||
case 'right':
|
||||
return 3;
|
||||
case 'top':
|
||||
return 4;
|
||||
case 'bottom':
|
||||
return 5;
|
||||
default:
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
function column_string_const($column)
|
||||
{
|
||||
switch ($column)
|
||||
{
|
||||
case 'top':
|
||||
return 1;
|
||||
case 'left':
|
||||
return 2;
|
||||
case 'center':
|
||||
return 4;
|
||||
case 'right':
|
||||
return 8;
|
||||
case 'bottom':
|
||||
return 16;
|
||||
default:
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
@@ -1,357 +0,0 @@
|
||||
<?php
|
||||
/**
|
||||
*
|
||||
* @package Board3 Portal v2
|
||||
* @copyright (c) Board3 Group ( www.board3.de )
|
||||
* @license http://opensource.org/licenses/gpl-license.php GNU Public License
|
||||
*
|
||||
*/
|
||||
|
||||
if (!defined('IN_PHPBB'))
|
||||
{
|
||||
exit;
|
||||
}
|
||||
|
||||
/**
|
||||
* @ignore
|
||||
*/
|
||||
class portal_upload
|
||||
{
|
||||
/*
|
||||
* pre-defined vars
|
||||
*/
|
||||
private $upload_path;
|
||||
private $u_action;
|
||||
|
||||
/*
|
||||
* constructor function
|
||||
*/
|
||||
public function __construct($path, $u_action)
|
||||
{
|
||||
// This shouldn't happen, but we check for it anyways
|
||||
if(is_dir($path))
|
||||
{
|
||||
$this->upload_path = $path;
|
||||
$this->u_action = $u_action;
|
||||
|
||||
$this->upload_file();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* upload module zip
|
||||
*/
|
||||
private function upload_file()
|
||||
{
|
||||
global $user, $phpbb_root_path, $phpEx, $phpbb_admin_path, $template;
|
||||
// Upload part
|
||||
$user->add_lang('posting'); // For error messages
|
||||
include($phpbb_root_path . 'includes/functions_upload.' . $phpEx);
|
||||
$upload = new fileupload();
|
||||
// Only allow ZIP files
|
||||
$upload->set_allowed_extensions(array('zip'));
|
||||
|
||||
$file = $upload->form_upload('modupload');
|
||||
|
||||
// this is for module zips so don't allow anything else
|
||||
if (empty($file->filename) || !preg_match('.zip.', $file->get('realname')))
|
||||
{
|
||||
trigger_error($user->lang['NO_FILE_B3P'] . adm_back_link($this->u_action), E_USER_WARNING);
|
||||
}
|
||||
else
|
||||
{
|
||||
if (!$file->init_error && !sizeof($file->error))
|
||||
{
|
||||
$file->clean_filename('real');
|
||||
$file->move_file(str_replace($phpbb_root_path, '', $this->upload_path), true, true);
|
||||
|
||||
if (!sizeof($file->error))
|
||||
{
|
||||
include($phpbb_root_path . 'includes/functions_compress.' . $phpEx);
|
||||
$mod_dir = $this->upload_path . str_replace('.zip', '', $file->get('realname'));
|
||||
// make sure we don't already have the new folder
|
||||
if(is_dir($mod_dir))
|
||||
{
|
||||
$this->directory_delete($mod_dir);
|
||||
}
|
||||
|
||||
$compress = new compress_zip('r', $file->destination_file);
|
||||
$compress->extract($mod_dir . '_tmp/');
|
||||
$compress->close();
|
||||
$folder_contents = $this->cut_folder(scandir($mod_dir . '_tmp/', 1)); // This ensures dir is at index 0
|
||||
|
||||
// We need to check if there's a main directory inside the temp MOD directory
|
||||
if (sizeof($folder_contents) == 1)
|
||||
{
|
||||
// We need to move that directory then
|
||||
$this->directory_move($mod_dir . '_tmp/' . $folder_contents[0], $this->upload_path . $folder_contents[0]);
|
||||
$new_mod_dir = $this->upload_path . $folder_contents[0];
|
||||
|
||||
}
|
||||
else if (!is_dir($mod_dir))
|
||||
{
|
||||
// Change the name of the directory by moving to directory without _tmp in it
|
||||
$this->directory_move($mod_dir . '_tmp/', $mod_dir);
|
||||
$new_mod_dir = $mod_dir;
|
||||
}
|
||||
|
||||
$this->directory_delete($mod_dir . '_tmp/');
|
||||
|
||||
// make sure we set $mod_dir to the correct folder after the above step
|
||||
$mod_dir = (isset($new_mod_dir)) ? $new_mod_dir : $mod_dir;
|
||||
|
||||
// if we got until here set $actions['NEW_FILES']
|
||||
$actions['NEW_FILES'] = array();
|
||||
|
||||
// Now we need to get the files inside the folders
|
||||
//$folder_contents = $this->cut_folder(scandir($mod_dir));
|
||||
$iterator = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($mod_dir, FilesystemIterator::SKIP_DOTS)); // requires PHP 5
|
||||
|
||||
foreach($iterator as $cur_file)
|
||||
{
|
||||
$cur_path = $cur_file->getPathname();
|
||||
$cur_path = str_replace('\\', '/', $cur_path); // we want unix-like paths
|
||||
$cur_path = str_replace($mod_dir . '/', '', $cur_path);
|
||||
$cut_pos = strpos($cur_path, '/');
|
||||
|
||||
// Only allow files in adm, language, portal and styles folder and a license.txt
|
||||
if(!in_array(substr($cur_path, 0, $cut_pos), array('adm', 'language', 'portal', 'styles')) && $cur_file->getFilename() != 'license.txt')
|
||||
{
|
||||
$file->remove();
|
||||
$this->directory_delete($mod_dir);
|
||||
trigger_error($user->lang['MODULE_CORRUPTED'] . adm_back_link(append_sid("{$phpbb_admin_path}index.$phpEx", 'i=portal&mode=modules')), E_USER_WARNING);
|
||||
}
|
||||
else
|
||||
{
|
||||
$actions['NEW_FILES'][$mod_dir . '/' . $cur_path] = $phpbb_root_path . $cur_path;
|
||||
}
|
||||
}
|
||||
|
||||
if (!sizeof($file->error))
|
||||
{
|
||||
// Let's start moving our files where they belong
|
||||
foreach ($actions['NEW_FILES'] as $source => $target)
|
||||
{
|
||||
/*
|
||||
* make sure we don't try to copy folders
|
||||
* folders will be created if necessary in copy_content
|
||||
*/
|
||||
if(is_dir($source))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
$status = $this->copy_content($source, $target);
|
||||
|
||||
if ($status !== true && !is_null($status))
|
||||
{
|
||||
$module_installed = false;
|
||||
}
|
||||
|
||||
$template->assign_block_vars('new_files', array(
|
||||
'S_SUCCESS' => ($status === true) ? true : false,
|
||||
'S_NO_COPY_ATTEMPT' => (is_null($status)) ? true : false,
|
||||
'SOURCE' => $source,
|
||||
'TARGET' => $target,
|
||||
));
|
||||
}
|
||||
|
||||
$template->assign_vars(array(
|
||||
'S_MOD_SUCCESSBOX' => true,
|
||||
'MESSAGE' => $user->lang['MODULE_UPLOADED'],
|
||||
'U_RETURN' => append_sid("{$phpbb_admin_path}index.$phpEx", 'i=portal&mode=modules'),
|
||||
'S_INSTALL' => true,
|
||||
));
|
||||
}
|
||||
}
|
||||
}
|
||||
$file->remove();
|
||||
$this->directory_delete($mod_dir);
|
||||
if ($file->init_error || sizeof($file->error))
|
||||
{
|
||||
trigger_error((sizeof($file->error) ? implode('<br />', $file->error) : $user->lang['MOD_UPLOAD_INIT_FAIL']) . adm_back_link($this->u_action), E_USER_WARNING);
|
||||
}
|
||||
|
||||
$this->tpl_name = 'portal/acp_portal_upload_module';
|
||||
$this->page_title = $user->lang['ACP_PORTAL_UPLOAD'];
|
||||
|
||||
$template->assign_vars(array(
|
||||
'L_TITLE' => $user->lang['ACP_PORTAL_UPLOAD'],
|
||||
'L_TITLE_EXPLAIN' => '',
|
||||
|
||||
'S_ERROR' => false, // if we get here, there was no error or we can ignore it
|
||||
'ERROR_MSG' => '',
|
||||
|
||||
'U_ACTION' => $this->u_action,
|
||||
));
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Cuts the unneeded '.' and '..' from the folder content info scandir returns
|
||||
*
|
||||
* @return: cut array
|
||||
*/
|
||||
private function cut_folder($folder_content)
|
||||
{
|
||||
$cut_array = array('.', '..');
|
||||
$folder_content = array_diff($folder_content, $cut_array);
|
||||
|
||||
return $folder_content;
|
||||
}
|
||||
|
||||
private function directory_move($src, $dest)
|
||||
{
|
||||
$src_contents = scandir($src);
|
||||
|
||||
if (!is_dir($dest) && is_dir($src))
|
||||
{
|
||||
mkdir($dest . '/', 0755);
|
||||
}
|
||||
|
||||
foreach ($src_contents as $src_entry)
|
||||
{
|
||||
if ($src_entry != '.' && $src_entry != '..')
|
||||
{
|
||||
if (is_dir($src . '/' . $src_entry) && !is_dir($dest . '/' . $src_entry))
|
||||
{
|
||||
$this->directory_move($src . '/' . $src_entry, $dest . '/' . $src_entry);
|
||||
}
|
||||
else if (is_file($src . '/' . $src_entry) && !is_file($dest . '/' . $src_entry))
|
||||
{
|
||||
@copy($src . '/' . $src_entry, $dest . '/' . $src_entry);
|
||||
@chmod($dest . '/' . $src_entry, 0644);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* the following functions are from the AutoMOD package
|
||||
* @copyright (c) 2008 phpBB Group
|
||||
* @license http://opensource.org/licenses/gpl-2.0.php GNU Public License
|
||||
*/
|
||||
|
||||
private function directory_delete($dir)
|
||||
{
|
||||
if (!file_exists($dir))
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
if (!is_dir($dir) && is_file($dir))
|
||||
{
|
||||
@chmod($dir, 0644);
|
||||
return @unlink($dir);
|
||||
}
|
||||
|
||||
foreach (scandir($dir) as $item)
|
||||
{
|
||||
if ($item == '.' || $item == '..')
|
||||
{
|
||||
continue;
|
||||
}
|
||||
if (!$this->directory_delete($dir . "/" . $item))
|
||||
{
|
||||
@chmod($dir . "/" . $item, 0644);
|
||||
if (!$this->directory_delete($dir . "/" . $item))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return @rmdir($dir);
|
||||
}
|
||||
|
||||
/**
|
||||
* Moves files or complete directories
|
||||
*
|
||||
* @param $from string Can be a file or a directory. Will move either the file or all files within the directory
|
||||
* @param $to string Where to move the file(s) to. If not specified then will get moved to the root folder
|
||||
* @param $strip Used for FTP only
|
||||
* @return mixed: Bool true on success, error string on failure, NULL if no action was taken
|
||||
*
|
||||
* NOTE: function should preferably not return in case of failure on only one file.
|
||||
* The current method makes error handling difficult
|
||||
*/
|
||||
private function copy_content($from, $to = '', $strip = '')
|
||||
{
|
||||
global $phpbb_root_path, $user, $config;
|
||||
|
||||
if (strpos($from, $phpbb_root_path) !== 0)
|
||||
{
|
||||
$from = $phpbb_root_path . $from;
|
||||
}
|
||||
|
||||
if (strpos($to, $phpbb_root_path) !== 0)
|
||||
{
|
||||
$to = $phpbb_root_path . $to;
|
||||
}
|
||||
|
||||
$dirname_check = dirname($to);
|
||||
|
||||
if (!is_dir($dirname_check))
|
||||
{
|
||||
if ($this->recursive_mkdir($dirname_check) === false)
|
||||
{
|
||||
return sprintf($user->lang['MODULE_UPLOAD_MKDIR_FAILURE'], $dirname_check);
|
||||
}
|
||||
}
|
||||
|
||||
// leave a backup file if it already exists
|
||||
if(file_exists($to))
|
||||
{
|
||||
// remove old backup file first
|
||||
if(file_exists($to . '.bak'))
|
||||
{
|
||||
@chmod($to . '.bak', 0644);
|
||||
unlink($to . '.bak');
|
||||
}
|
||||
@rename($to, $to . '.bak');
|
||||
@chmod($to, 0644);
|
||||
}
|
||||
|
||||
if (!@copy($from, $to))
|
||||
{
|
||||
return sprintf($user->lang['MODULE_COPY_FAILURE'], $to);
|
||||
}
|
||||
@chmod($to, 0644);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* @author Michal Nazarewicz (from the php manual)
|
||||
* Creates all non-existant directories in a path
|
||||
* @param $path - path to create
|
||||
* @param $mode - CHMOD the new dir to these permissions
|
||||
* @return bool
|
||||
*/
|
||||
private function recursive_mkdir($path, $mode = false)
|
||||
{
|
||||
if (!$mode)
|
||||
{
|
||||
$mode = octdec(0777);
|
||||
}
|
||||
|
||||
$dirs = explode('/', $path);
|
||||
$count = sizeof($dirs);
|
||||
$path = '.';
|
||||
for ($i = 0; $i < $count; $i++)
|
||||
{
|
||||
$path .= '/' . $dirs[$i];
|
||||
|
||||
if (!is_dir($path))
|
||||
{
|
||||
@mkdir($path, $mode);
|
||||
@chmod($path, $mode);
|
||||
|
||||
if (!is_dir($path))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
}
|
||||
@@ -1,189 +0,0 @@
|
||||
<?php
|
||||
/**
|
||||
*
|
||||
* @package Board3 Portal v2
|
||||
* @copyright (c) Board3 Group ( www.board3.de )
|
||||
* @license http://opensource.org/licenses/gpl-license.php GNU Public License
|
||||
*
|
||||
*/
|
||||
|
||||
/**
|
||||
* @ignore
|
||||
*/
|
||||
|
||||
if (!defined('IN_PHPBB'))
|
||||
{
|
||||
exit;
|
||||
}
|
||||
|
||||
/**
|
||||
* A copy of Handyman` s MOD version check, to view it on the gallery overview
|
||||
*/
|
||||
function mod_version_check($phpbb_root_path, $root_path, $return_version = false)
|
||||
{
|
||||
global $user, $template;
|
||||
global $phpEx;
|
||||
|
||||
if (!function_exists('get_remote_file'))
|
||||
{
|
||||
include($phpbb_root_path . 'includes/functions_admin.' . $phpEx);
|
||||
}
|
||||
|
||||
// load version files
|
||||
$class_functions = array();
|
||||
include($root_path . 'adm/mods/board3_portal_check_version.' . $phpEx);
|
||||
$class_name = 'board3_portal_check_version';
|
||||
|
||||
$version_check = new $class_name();
|
||||
|
||||
$var = call_user_func(array($version_check, 'version'));
|
||||
|
||||
// Get current and latest version
|
||||
$errstr = '';
|
||||
$errno = 0;
|
||||
|
||||
if (!$return_version)
|
||||
{
|
||||
$mod_version = $user->lang['NO_INFO'];
|
||||
$data = array(
|
||||
'title' => $var['title'],
|
||||
'description' => $user->lang['NO_INFO'],
|
||||
'download' => $user->lang['NO_INFO'],
|
||||
'announcement' => $user->lang['NO_INFO'],
|
||||
);
|
||||
}
|
||||
$file = get_remote_file($var['file'][0], '/' . $var['file'][1], $var['file'][2], $errstr, $errno);
|
||||
|
||||
if ($file)
|
||||
{
|
||||
if (version_compare(PHP_VERSION, '5.0.0', '<'))
|
||||
{
|
||||
$row = array();
|
||||
$data_array = mvc_setup_array($file);
|
||||
|
||||
$row = $data_array['mods'][$var['tag']];
|
||||
$mod_version = $row['mod_version'];
|
||||
$mod_version = $mod_version['major'] . '.' . $mod_version['minor'] . '.' . $mod_version['revision'] . $mod_version['release'];
|
||||
|
||||
$data = array(
|
||||
'title' => $row['title'],
|
||||
'description' => $row['description'],
|
||||
'download' => $row['download'],
|
||||
'announcement' => $row['announcement'],
|
||||
);
|
||||
}
|
||||
else
|
||||
{
|
||||
// let's not stop the page from loading if a mod author messed up their mod check file
|
||||
// also take care of one of the easiest ways to mess up an xml file: "&"
|
||||
$mod = @simplexml_load_string(str_replace('&', '&', $file));
|
||||
if (isset($mod->$var['tag']))
|
||||
{
|
||||
$row = $mod->$var['tag'];
|
||||
$mod_version = $row->mod_version->major . '.' . $row->mod_version->minor . '.' . $row->mod_version->revision . $row->mod_version->release;
|
||||
|
||||
$data = array(
|
||||
'title' => $row->title,
|
||||
'description' => $row->description,
|
||||
'download' => $row->download,
|
||||
'announcement' => $row->announcement,
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// remove spaces from the version in the mod file stored locally
|
||||
$version = str_replace(' ', '', $var['version']);
|
||||
if ($return_version)
|
||||
{
|
||||
return $version;
|
||||
}
|
||||
|
||||
$version_compare = (version_compare($version, $mod_version, '<')) ? false : true;
|
||||
|
||||
$template->assign_block_vars('mods', array(
|
||||
'ANNOUNCEMENT' => $data['announcement'],
|
||||
'AUTHOR' => $var['author'],
|
||||
'CURRENT_VERSION' => $version,
|
||||
'DESCRIPTION' => $data['description'],
|
||||
'DOWNLOAD' => $data['download'],
|
||||
'LATEST_VERSION' => $mod_version,
|
||||
'TITLE' => $data['title'],
|
||||
|
||||
'UP_TO_DATE' => sprintf((!$version_compare) ? $user->lang['NOT_UP_TO_DATE'] : $user->lang['UP_TO_DATE'], $data['title']),
|
||||
|
||||
'S_UP_TO_DATE' => $version_compare,
|
||||
|
||||
'U_AUTHOR' => 'http://www.phpbb.com/community/memberlist.php?mode=viewprofile&un=' . $var['author'],
|
||||
));
|
||||
}
|
||||
|
||||
/**
|
||||
* this is for php4 only
|
||||
* kind of a dirty hack, but since I get the say on how the xml is done, I can have 4 levels max
|
||||
*/
|
||||
function mvc_setup_array($xml)
|
||||
{
|
||||
// Fire up the built-in XML parser
|
||||
$values = $index = array();
|
||||
$parser = xml_parser_create();
|
||||
xml_parser_set_option($parser, XML_OPTION_CASE_FOLDING, 0);
|
||||
|
||||
// this takes care of one possible xml error
|
||||
$xml = str_replace('&', '&', $xml);
|
||||
|
||||
// Set tag names and values
|
||||
xml_parse_into_struct($parser, $xml, $values, $index);
|
||||
|
||||
// Close down XML parser
|
||||
xml_parser_free($parser);
|
||||
|
||||
$ary = array();
|
||||
|
||||
foreach ($values as $value)
|
||||
{
|
||||
switch (trim($value['level']))
|
||||
{
|
||||
case 1:
|
||||
if ($value['type'] == 'open')
|
||||
{
|
||||
$one = $value['tag'];
|
||||
}
|
||||
else if ($value['type'] == 'complete')
|
||||
{
|
||||
$ary[$value['tag']] = $value['value'];
|
||||
}
|
||||
break;
|
||||
|
||||
case 2:
|
||||
if ($value['type'] == 'open')
|
||||
{
|
||||
$two = $value['tag'];
|
||||
}
|
||||
else if ($value['type'] == 'complete')
|
||||
{
|
||||
$ary[$one][$value['tag']] = $value['value'];
|
||||
}
|
||||
break;
|
||||
|
||||
case 3:
|
||||
if ($value['type'] == 'open')
|
||||
{
|
||||
$three = $value['tag'];
|
||||
}
|
||||
else if ($value['type'] == 'complete')
|
||||
{
|
||||
$ary[$one][$two][$value['tag']] = $value['value'];
|
||||
}
|
||||
break;
|
||||
|
||||
case 4:
|
||||
if ($value['type'] == 'complete')
|
||||
{
|
||||
$ary[$one][$two][$three][$value['tag']] = isset($value['value']) ? $value['value'] : '';
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
return $ary;
|
||||
}
|
||||
@@ -1,7 +0,0 @@
|
||||
<html>
|
||||
<head>
|
||||
<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
|
||||
</head>
|
||||
<body bgcolor="#FFFFFF" text="#000000">
|
||||
</body>
|
||||
</html>
|
||||
@@ -1,7 +0,0 @@
|
||||
<html>
|
||||
<head>
|
||||
<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
|
||||
</head>
|
||||
<body bgcolor="#FFFFFF" text="#000000">
|
||||
</body>
|
||||
</html>
|
||||
@@ -1,470 +0,0 @@
|
||||
<?php
|
||||
/**
|
||||
*
|
||||
* @package Board3 Portal v2 - Announcements
|
||||
* @copyright (c) Board3 Group ( www.board3.de )
|
||||
* @license http://opensource.org/licenses/gpl-license.php GNU Public License
|
||||
*
|
||||
*/
|
||||
|
||||
/**
|
||||
* @ignore
|
||||
*/
|
||||
if (!defined('IN_PHPBB'))
|
||||
{
|
||||
exit;
|
||||
}
|
||||
|
||||
/**
|
||||
* @package Modulname
|
||||
*/
|
||||
class portal_announcements_module
|
||||
{
|
||||
/**
|
||||
* Allowed columns: Just sum up your options (Exp: left + right = 10)
|
||||
* top 1
|
||||
* left 2
|
||||
* center 4
|
||||
* right 8
|
||||
* bottom 16
|
||||
*/
|
||||
public $columns = 21;
|
||||
|
||||
/**
|
||||
* Default modulename
|
||||
*/
|
||||
public $name = 'GLOBAL_ANNOUNCEMENTS';
|
||||
|
||||
/**
|
||||
* Default module-image:
|
||||
* file must be in "{T_THEME_PATH}/images/portal/"
|
||||
*/
|
||||
public $image_src = '';
|
||||
|
||||
/**
|
||||
* module-language file
|
||||
* file must be in "language/{$user->lang}/mods/portal/"
|
||||
*/
|
||||
public $language = 'portal_announcements_module';
|
||||
|
||||
public function get_template_center($module_id)
|
||||
{
|
||||
global $config, $template, $db, $user, $auth, $cache, $phpEx, $phpbb_root_path;
|
||||
|
||||
$announcement = request_var('announcement', -1);
|
||||
$announcement = ($announcement > $config['board3_announcements_length_' . $module_id] -1) ? -1 : $announcement;
|
||||
$start = request_var('ap', 0);
|
||||
$start = ($start < 0) ? 0 : $start;
|
||||
|
||||
// Fetch announcements from portal/includes/functions.php with check if "read full" is requested.
|
||||
$portal_announcement_length = ($announcement < 0) ? $config['board3_announcements_length_' . $module_id] : 0;
|
||||
$fetch_news = phpbb_fetch_posts($module_id, $config['board3_global_announcements_forum_' . $module_id], $config['board3_announcements_permissions_' . $module_id], $config['board3_number_of_announcements_' . $module_id], $portal_announcement_length, $config['board3_announcements_day_' . $module_id], 'announcements', $start, $config['board3_announcements_forum_exclude_' . $module_id]);
|
||||
|
||||
// Any announcements present? If not terminate it here.
|
||||
if (sizeof($fetch_news) == 0)
|
||||
{
|
||||
$template->assign_block_vars('announcements_center_row', array(
|
||||
'S_NO_TOPICS' => true,
|
||||
'S_NOT_LAST' => false
|
||||
));
|
||||
|
||||
$template->assign_var('S_CAN_READ', false);
|
||||
}
|
||||
else
|
||||
{
|
||||
// Count number of posts for announcements archive, considering if permission check is dis- or enabled.
|
||||
if ($config['board3_announcements_archive_' . $module_id])
|
||||
{
|
||||
$permissions = $config['board3_announcements_permissions_' . $module_id];
|
||||
$forum_from = $config['board3_global_announcements_forum_' . $module_id];
|
||||
$forum_from = (strpos($forum_from, ',') !== false) ? explode(',', $forum_from) : (($forum_from != '') ? array($forum_from) : array());
|
||||
|
||||
$time = ($config['board3_announcements_day_' . $module_id] == 0) ? 0 : $config['board3_announcements_day_' . $module_id];
|
||||
$post_time = ($time == 0) ? '' : 'AND topic_time > ' . (time() - $time * 86400);
|
||||
|
||||
$str_where = '';
|
||||
|
||||
if($permissions == true)
|
||||
{
|
||||
$disallow_access = array_unique(array_keys($auth->acl_getf('!f_read', true)));
|
||||
}
|
||||
else
|
||||
{
|
||||
$disallow_access = array();
|
||||
}
|
||||
|
||||
if($config['board3_announcements_forum_exclude_' . $module_id] == true)
|
||||
{
|
||||
$disallow_access = array_merge($disallow_access, $forum_from);
|
||||
$forum_from = array();
|
||||
}
|
||||
|
||||
$global_f = 0;
|
||||
|
||||
if(sizeof($forum_from))
|
||||
{
|
||||
$disallow_access = array_diff($forum_from, $disallow_access);
|
||||
if(!sizeof($disallow_access))
|
||||
{
|
||||
return array();
|
||||
}
|
||||
|
||||
foreach($disallow_access as $acc_id)
|
||||
{
|
||||
$acc_id = (int) $acc_id;
|
||||
$str_where .= "forum_id = $acc_id OR ";
|
||||
if($global_f < 1 && $acc_id > 0)
|
||||
{
|
||||
$global_f = $acc_id;
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
foreach($disallow_access as $acc_id)
|
||||
{
|
||||
$acc_id = (int) $acc_id;
|
||||
$str_where .= "forum_id <> $acc_id AND ";
|
||||
}
|
||||
}
|
||||
|
||||
$str_where = (strlen($str_where) > 0) ? 'AND (forum_id = 0 OR (' . trim(substr($str_where, 0, -4)) . '))' : '';
|
||||
|
||||
$sql = 'SELECT COUNT(topic_id) AS num_topics
|
||||
FROM ' . TOPICS_TABLE . '
|
||||
WHERE ((topic_type = ' . POST_GLOBAL . ')
|
||||
OR topic_type = ' . POST_ANNOUNCE . ')
|
||||
AND topic_visibility = 1
|
||||
AND topic_moved_id = 0
|
||||
' . $post_time . '
|
||||
' . $str_where;
|
||||
$result = $db->sql_query($sql);
|
||||
$total_announcements = (int) $db->sql_fetchfield('num_topics');
|
||||
$db->sql_freeresult($result);
|
||||
}
|
||||
|
||||
$topic_tracking_info = (get_portal_tracking_info($fetch_news));
|
||||
|
||||
if($announcement < 0)
|
||||
// Show the announcements overview
|
||||
{
|
||||
$count = $fetch_news['topic_count'];
|
||||
for ($i = 0; $i < $count; $i++)
|
||||
{
|
||||
if(isset($fetch_news[$i]['striped']) && $fetch_news[$i]['striped'] == true)
|
||||
{
|
||||
$open_bracket = '[ ';
|
||||
$close_bracket = ' ]';
|
||||
$read_full = $user->lang['READ_FULL'];
|
||||
}
|
||||
else
|
||||
{
|
||||
$open_bracket = '';
|
||||
$close_bracket = '';
|
||||
$read_full = '';
|
||||
}
|
||||
// unread?
|
||||
$forum_id = $fetch_news[$i]['forum_id'];
|
||||
$topic_id = $fetch_news[$i]['topic_id'];
|
||||
//$topic_tracking_info = get_complete_topic_tracking($forum_id, $topic_id, $global_announce_list = false);
|
||||
$unread_topic = (isset($topic_tracking_info[$topic_id]) && $fetch_news[$i]['topic_last_post_time'] > $topic_tracking_info[$topic_id]) ? true : false;
|
||||
$real_forum_id = ($forum_id == 0) ? $fetch_news['global_id']: $forum_id;
|
||||
$read_full_url = (isset($_GET['ap'])) ? 'ap='. $start . '&announcement=' . $i . '#a' . $i : 'announcement=' . $i . '#a' . $i;
|
||||
$view_topic_url = append_sid("{$phpbb_root_path}viewtopic.$phpEx", 'f=' . (($fetch_news[$i]['forum_id']) ? $fetch_news[$i]['forum_id'] : $forum_id) . '&t=' . $topic_id);
|
||||
|
||||
if ($config['board3_announcements_archive_' . $module_id])
|
||||
{
|
||||
$pagination = generate_portal_pagination(append_sid("{$phpbb_root_path}portal.$phpEx"), $total_announcements, $config['board3_number_of_announcements_' . $module_id], $start, 'announcements');
|
||||
}
|
||||
|
||||
$replies = ($auth->acl_get('m_approve', $forum_id)) ? $fetch_news[$i]['topic_replies_real'] : $fetch_news[$i]['topic_replies'];
|
||||
$folder_img = $folder_alt = $topic_type = $folder = $folder_new = '';
|
||||
switch ($fetch_news[$i]['topic_type'])
|
||||
{
|
||||
case POST_GLOBAL:
|
||||
$folder = 'global_read';
|
||||
$folder_new = 'global_unread';
|
||||
break;
|
||||
case POST_ANNOUNCE:
|
||||
$folder = 'announce_read';
|
||||
$folder_new = 'announce_unread';
|
||||
break;
|
||||
default:
|
||||
$folder = 'topic_read';
|
||||
$folder_new = 'topic_unread';
|
||||
if ($config['hot_threshold'] && $replies >= $config['hot_threshold'] && $fetch_news[$i]['topic_status'] != ITEM_LOCKED)
|
||||
{
|
||||
$folder .= '_hot';
|
||||
$folder_new .= '_hot';
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
if ($fetch_news[$i]['topic_status'] == ITEM_LOCKED)
|
||||
{
|
||||
$folder .= '_locked';
|
||||
$folder_new .= '_locked';
|
||||
}
|
||||
if ($fetch_news[$i]['topic_type'] == POST_GLOBAL)
|
||||
{
|
||||
$global_announce_list[$fetch_news[$i]['topic_id']] = true;
|
||||
}
|
||||
if ($fetch_news[$i]['topic_posted'])
|
||||
{
|
||||
$folder .= '_mine';
|
||||
$folder_new .= '_mine';
|
||||
}
|
||||
$folder_img = ($unread_topic) ? $folder_new : $folder;
|
||||
$folder_alt = ($unread_topic) ? 'NEW_POSTS' : (($fetch_news[$i]['topic_status'] == ITEM_LOCKED) ? 'TOPIC_LOCKED' : 'NO_NEW_POSTS');
|
||||
|
||||
// Grab icons
|
||||
$icons = $cache->obtain_icons();
|
||||
|
||||
$template->assign_block_vars('announcements_center_row', array(
|
||||
'ATTACH_ICON_IMG' => ($fetch_news[$i]['attachment'] && $config['allow_attachments']) ? $user->img('icon_topic_attach', $user->lang['TOTAL_ATTACHMENTS']) : '',
|
||||
'FORUM_NAME' => ($forum_id) ? $fetch_news[$i]['forum_name'] : '',
|
||||
'TITLE' => $fetch_news[$i]['topic_title'],
|
||||
'POSTER' => $fetch_news[$i]['username'],
|
||||
'POSTER_FULL' => $fetch_news[$i]['username_full'],
|
||||
'USERNAME_FULL_LAST' => $fetch_news[$i]['username_full_last'],
|
||||
'U_USER_PROFILE' => (($fetch_news[$i]['user_type'] == USER_NORMAL || $fetch_news[$i]['user_type'] == USER_FOUNDER) && $fetch_news[$i]['user_id'] != ANONYMOUS) ? append_sid("{$phpbb_root_path}memberlist.$phpEx", 'mode=viewprofile&u=' . $fetch_news[$i]['user_id']) : '',
|
||||
'TIME' => $fetch_news[$i]['topic_time'],
|
||||
'LAST_POST_TIME' => $user->format_date($fetch_news[$i]['topic_last_post_time']),
|
||||
'TEXT' => $fetch_news[$i]['post_text'],
|
||||
'REPLIES' => $fetch_news[$i]['topic_replies'],
|
||||
'TOPIC_VIEWS' => $fetch_news[$i]['topic_views'],
|
||||
'A_ID' => $i,
|
||||
'TOPIC_FOLDER_IMG' => $user->img($folder_img, $folder_alt),
|
||||
'TOPIC_FOLDER_IMG_SRC' => $user->img($folder_img, $folder_alt, false, '', 'src'),
|
||||
'TOPIC_FOLDER_IMG_ALT' => $user->lang[$folder_alt],
|
||||
'FOLDER_IMG' => $user->img('topic_read', 'NO_NEW_POSTS'),
|
||||
'TOPIC_ICON_IMG' => (!empty($icons[$fetch_news[$i]['icon_id']])) ? $icons[$fetch_news[$i]['icon_id']]['img'] : '',
|
||||
'TOPIC_ICON_IMG_WIDTH' => (!empty($icons[$fetch_news[$i]['icon_id']])) ? $icons[$fetch_news[$i]['icon_id']]['width'] : '',
|
||||
'TOPIC_ICON_IMG_HEIGHT' => (!empty($icons[$fetch_news[$i]['icon_id']])) ? $icons[$fetch_news[$i]['icon_id']]['height'] : '',
|
||||
'U_VIEWFORUM' => append_sid("{$phpbb_root_path}viewforum.$phpEx", 'f=' . $fetch_news[$i]['forum_id']),
|
||||
'U_LAST_COMMENTS' => append_sid("{$phpbb_root_path}viewtopic.$phpEx", (($real_forum_id) ? 'f=' . $real_forum_id . '&' : '') . 't=' . $topic_id . '&p=' . $fetch_news[$i]['topic_last_post_id'] . '#p' . $fetch_news[$i]['topic_last_post_id']),
|
||||
'U_VIEW_COMMENTS' => append_sid("{$phpbb_root_path}viewtopic.$phpEx", (($real_forum_id) ? 'f=' . $real_forum_id . '&' : '') . 't=' . $topic_id),
|
||||
'U_VIEW_UNREAD' => append_sid("{$phpbb_root_path}viewtopic.$phpEx", (($real_forum_id) ? 'f=' . $real_forum_id . '&' : '') . 't=' . $topic_id . '&view=unread#unread'),
|
||||
'U_POST_COMMENT' => append_sid("{$phpbb_root_path}posting.$phpEx", 'mode=reply&' . (($real_forum_id) ? 'f=' . $real_forum_id . '&' : '') . 't=' . $topic_id),
|
||||
'U_READ_FULL' => append_sid("{$phpbb_root_path}portal.$phpEx", $read_full_url),
|
||||
'L_READ_FULL' => $read_full,
|
||||
'OPEN' => $open_bracket,
|
||||
'CLOSE' => $close_bracket,
|
||||
'S_NOT_LAST' => ($i < sizeof($fetch_news) - 1) ? true : false,
|
||||
'S_POLL' => $fetch_news[$i]['poll'],
|
||||
'S_UNREAD_INFO' => $unread_topic,
|
||||
'PAGINATION' => topic_generate_pagination($fetch_news[$i]['topic_replies'], $view_topic_url),
|
||||
'S_HAS_ATTACHMENTS' => (!empty($fetch_news[$i]['attachments'])) ? true : false,
|
||||
));
|
||||
|
||||
if(!empty($fetch_news[$i]['attachments']))
|
||||
{
|
||||
foreach ($fetch_news[$i]['attachments'] as $attachment)
|
||||
{
|
||||
$template->assign_block_vars('announcements_center_row.attachment', array(
|
||||
'DISPLAY_ATTACHMENT' => $attachment)
|
||||
);
|
||||
}
|
||||
}
|
||||
if ($config['board3_number_of_announcements_' . $module_id] != 0 && $config['board3_announcements_archive_' . $module_id])
|
||||
{
|
||||
$template->assign_vars(array(
|
||||
'AP_PAGINATION' => $pagination,
|
||||
'TOTAL_ANNOUNCEMENTS' => ($total_announcements == 1) ? $user->lang['VIEW_LATEST_ANNOUNCEMENT'] : sprintf($user->lang['VIEW_LATEST_ANNOUNCEMENTS'], $total_announcements),
|
||||
'AP_PAGE_NUMBER' => on_page($total_announcements, $config['board3_number_of_announcements_' . $module_id], $start))
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
// Show "read full" page
|
||||
{
|
||||
$i = $announcement;
|
||||
|
||||
/**
|
||||
* redirect to portal page if the specified announcement does not exist
|
||||
* force #top anchor in order to get rid of the #a anchor
|
||||
*/
|
||||
if (!isset($fetch_news[$i]))
|
||||
{
|
||||
redirect(append_sid($phpbb_root_path . 'portal.' . $phpEx, '#top'));
|
||||
}
|
||||
|
||||
$forum_id = $fetch_news[$i]['forum_id'];
|
||||
$topic_id = $fetch_news[$i]['topic_id'];
|
||||
$topic_tracking_info = get_complete_topic_tracking($forum_id, $topic_id, $global_announce_list = false);
|
||||
$unread_topic = (isset($topic_tracking_info[$topic_id]) && $fetch_news[$i]['topic_last_post_time'] > $topic_tracking_info[$topic_id]) ? true : false;
|
||||
$open_bracket = '[ ';
|
||||
$close_bracket = ' ]';
|
||||
$read_full = $user->lang['BACK'];
|
||||
$real_forum_id = ($forum_id == 0) ? $fetch_news['global_id']: $forum_id;
|
||||
|
||||
$read_full_url = (isset($_GET['ap'])) ? append_sid("{$phpbb_root_path}portal.$phpEx", "ap=$start#a$i") : append_sid("{$phpbb_root_path}portal.$phpEx#a$i");
|
||||
$view_topic_url = append_sid("{$phpbb_root_path}viewtopic.$phpEx", 'f=' . (($fetch_news[$i]['forum_id']) ? $fetch_news[$i]['forum_id'] : $forum_id) . '&t=' . $topic_id);
|
||||
if ($config['board3_announcements_archive_' . $module_id])
|
||||
{
|
||||
$pagination = generate_portal_pagination(append_sid("{$phpbb_root_path}portal.$phpEx"), $total_announcements, $config['board3_number_of_announcements_' . $module_id], $start, 'announcements');
|
||||
}
|
||||
|
||||
$template->assign_block_vars('announcements_center_row', array(
|
||||
'ATTACH_ICON_IMG' => ($fetch_news[$i]['attachment'] && $config['allow_attachments']) ? $user->img('icon_topic_attach', $user->lang['TOTAL_ATTACHMENTS']) : '',
|
||||
'FORUM_NAME' => ($forum_id) ? $fetch_news[$i]['forum_name'] : '',
|
||||
'TITLE' => $fetch_news[$i]['topic_title'],
|
||||
'POSTER' => $fetch_news[$i]['username'],
|
||||
'POSTER_FULL' => $fetch_news[$i]['username_full'],
|
||||
'TIME' => $fetch_news[$i]['topic_time'],
|
||||
'TEXT' => $fetch_news[$i]['post_text'],
|
||||
'REPLIES' => $fetch_news[$i]['topic_replies'],
|
||||
'TOPIC_VIEWS' => $fetch_news[$i]['topic_views'],
|
||||
'A_ID' => $i,
|
||||
'U_VIEWFORUM' => append_sid("{$phpbb_root_path}viewforum.$phpEx", 'f=' . $fetch_news[$i]['forum_id']),
|
||||
'U_LAST_COMMENTS' => append_sid("{$phpbb_root_path}viewtopic.$phpEx", (($real_forum_id) ? 'f=' . $real_forum_id . '&' : '') . 't=' . $topic_id . '&p=' . $fetch_news[$i]['topic_last_post_id'] . '#p' . $fetch_news[$i]['topic_last_post_id']),
|
||||
'U_VIEW_COMMENTS' => append_sid("{$phpbb_root_path}viewtopic.$phpEx", (($real_forum_id) ? 'f=' . $real_forum_id . '&' : '') . 't=' . $topic_id),
|
||||
'U_POST_COMMENT' => append_sid("{$phpbb_root_path}posting.$phpEx", 'mode=reply&' . (($real_forum_id) ? 'f=' . $real_forum_id . '&' : '') . 't=' . $topic_id),
|
||||
'S_POLL' => $fetch_news[$i]['poll'],
|
||||
'S_UNREAD_INFO' => $unread_topic,
|
||||
'U_READ_FULL' => $read_full_url,
|
||||
'L_READ_FULL' => $read_full,
|
||||
'OPEN' => $open_bracket,
|
||||
'CLOSE' => $close_bracket,
|
||||
'PAGINATION' => topic_generate_pagination($fetch_news[$i]['topic_replies'], $view_topic_url),
|
||||
'S_HAS_ATTACHMENTS' => (!empty($fetch_news[$i]['attachments'])) ? true : false,
|
||||
));
|
||||
|
||||
if(!empty($fetch_news[$i]['attachments']))
|
||||
{
|
||||
foreach ($fetch_news[$i]['attachments'] as $attachment)
|
||||
{
|
||||
$template->assign_block_vars('announcements_center_row.attachment', array(
|
||||
'DISPLAY_ATTACHMENT' => $attachment)
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
if ($config['board3_number_of_announcements_' . $module_id] <> 0 && $config['board3_announcements_archive_' . $module_id])
|
||||
{
|
||||
$template->assign_vars(array(
|
||||
'AP_PAGINATION' => $pagination,
|
||||
'TOTAL_ANNOUNCEMENTS' => ($total_announcements == 1) ? $user->lang['VIEW_LATEST_ANNOUNCEMENT'] : sprintf($user->lang['VIEW_LATEST_ANNOUNCEMENTS'], $total_announcements),
|
||||
'AP_PAGE_NUMBER' => on_page($total_announcements, $config['board3_number_of_announcements_' . $module_id], $start))
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$topic_icons = false;
|
||||
if(!empty($fetch_news['topic_icons']))
|
||||
{
|
||||
$topic_icons = true;
|
||||
}
|
||||
|
||||
$template->assign_vars(array(
|
||||
'NEWEST_POST_IMG' => $user->img('icon_topic_newest', 'VIEW_NEWEST_POST'),
|
||||
'READ_POST_IMG' => $user->img('icon_topic_latest', 'VIEW_LATEST_POST'),
|
||||
'GOTO_PAGE_IMG' => $user->img('icon_post_target', 'GOTO_PAGE'),
|
||||
'S_DISPLAY_ANNOUNCEMENTS_RVS' => ($config['board3_show_announcements_replies_views_' . $module_id]) ? true : false,
|
||||
'S_TOPIC_ICONS' => $topic_icons,
|
||||
));
|
||||
|
||||
if ($config['board3_announcements_style_' . $module_id])
|
||||
{
|
||||
return 'announcements_center_compact.html';
|
||||
}
|
||||
else
|
||||
{
|
||||
return 'announcements_center.html';
|
||||
}
|
||||
}
|
||||
|
||||
public function get_template_acp($module_id)
|
||||
{
|
||||
return array(
|
||||
'title' => 'ACP_PORTAL_ANNOUNCE_SETTINGS',
|
||||
'vars' => array(
|
||||
'legend1' => 'ACP_PORTAL_ANNOUNCE_SETTINGS',
|
||||
'board3_announcements_style_' . $module_id => array('lang' => 'PORTAL_ANNOUNCEMENTS_STYLE' , 'validate' => 'bool', 'type' => 'radio:yes_no', 'explain' => true),
|
||||
'board3_number_of_announcements_' . $module_id => array('lang' => 'PORTAL_NUMBER_OF_ANNOUNCEMENTS' , 'validate' => 'int', 'type' => 'text:3:3', 'explain' => true),
|
||||
'board3_announcements_day_' . $module_id => array('lang' => 'PORTAL_ANNOUNCEMENTS_DAY' , 'validate' => 'int', 'type' => 'text:3:3', 'explain' => true),
|
||||
'board3_announcements_length_' . $module_id => array('lang' => 'PORTAL_ANNOUNCEMENTS_LENGTH' , 'validate' => 'int', 'type' => 'text:3:3', 'explain' => true),
|
||||
'board3_global_announcements_forum_' . $module_id => array('lang' => 'PORTAL_GLOBAL_ANNOUNCEMENTS_FORUM' , 'validate' => 'string', 'type' => 'custom', 'explain' => true, 'method' => 'select_forums', 'submit' => 'store_selected_forums'),
|
||||
'board3_announcements_forum_exclude_' . $module_id => array('lang' => 'PORTAL_ANNOUNCEMENTS_FORUM_EXCLUDE', 'validate' => 'string', 'type' => 'radio:yes_no', 'explain' => true),
|
||||
'board3_announcements_archive_' . $module_id => array('lang' => 'PORTAL_ANNOUNCEMENTS_ARCHIVE', 'validate' => 'bool', 'type' => 'radio:yes_no', 'explain' => true),
|
||||
'board3_announcements_permissions_' . $module_id => array('lang' => 'PORTAL_ANNOUNCEMENTS_PERMISSIONS' , 'validate' => 'bool', 'type' => 'radio:yes_no', 'explain' => true),
|
||||
'board3_show_announcements_replies_views_' . $module_id => array('lang' => 'PORTAL_SHOW_REPLIES_VIEWS', 'validate' => 'bool', 'type' => 'radio:yes_no', 'explain' => true),
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* API functions
|
||||
*/
|
||||
public function install($module_id)
|
||||
{
|
||||
set_config('board3_announcements_style_' . $module_id, 0);
|
||||
set_config('board3_number_of_announcements_' . $module_id, 1);
|
||||
set_config('board3_announcements_day_' . $module_id, 0);
|
||||
set_config('board3_announcements_length_' . $module_id, 200);
|
||||
set_config('board3_global_announcements_forum_' . $module_id, '');
|
||||
set_config('board3_announcements_forum_exclude_' . $module_id, 0);
|
||||
set_config('board3_announcements_archive_' . $module_id, 1);
|
||||
set_config('board3_announcements_permissions_' . $module_id, 1);
|
||||
set_config('board3_show_announcements_replies_views_' . $module_id, 1);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
public function uninstall($module_id)
|
||||
{
|
||||
global $db;
|
||||
|
||||
$del_config = array(
|
||||
'board3_announcements_style_' . $module_id,
|
||||
'board3_number_of_announcements_' . $module_id,
|
||||
'board3_announcements_day_' . $module_id,
|
||||
'board3_announcements_length_' . $module_id,
|
||||
'board3_global_announcements_forum_' . $module_id,
|
||||
'board3_announcements_forum_exclude_' . $module_id,
|
||||
'board3_announcements_archive_' . $module_id,
|
||||
'board3_announcements_permissions_' . $module_id,
|
||||
'board3_show_announcements_replies_views_' . $module_id,
|
||||
);
|
||||
$sql = 'DELETE FROM ' . CONFIG_TABLE . '
|
||||
WHERE ' . $db->sql_in_set('config_name', $del_config);
|
||||
return $db->sql_query($sql);
|
||||
}
|
||||
|
||||
// Create forum select box
|
||||
public function select_forums($value, $key, $module_id)
|
||||
{
|
||||
global $user, $config;
|
||||
|
||||
$forum_list = make_forum_select(false, false, true, true, true, false, true);
|
||||
|
||||
$selected = array();
|
||||
if(isset($config[$key]) && strlen($config[$key]) > 0)
|
||||
{
|
||||
$selected = explode(',', $config[$key]);
|
||||
}
|
||||
// Build forum options
|
||||
$s_forum_options = '<select id="' . $key . '" name="' . $key . '[]" multiple="multiple">';
|
||||
foreach ($forum_list as $f_id => $f_row)
|
||||
{
|
||||
$s_forum_options .= '<option value="' . $f_id . '"' . ((in_array($f_id, $selected)) ? ' selected="selected"' : '') . (($f_row['disabled']) ? ' disabled="disabled" class="disabled-option"' : '') . '>' . $f_row['padding'] . $f_row['forum_name'] . '</option>';
|
||||
}
|
||||
$s_forum_options .= '</select>';
|
||||
|
||||
return $s_forum_options;
|
||||
|
||||
}
|
||||
|
||||
// Store selected forums
|
||||
public function store_selected_forums($key, $module_id)
|
||||
{
|
||||
global $db, $cache;
|
||||
|
||||
// Get selected forums
|
||||
$values = request_var($key, array(0 => ''));
|
||||
$news = implode(',', $values);
|
||||
set_config($key, $news);
|
||||
}
|
||||
}
|
||||
@@ -1,296 +0,0 @@
|
||||
<?php
|
||||
/**
|
||||
*
|
||||
* @package Board3 Portal v2 - Attachments
|
||||
* @copyright (c) Board3 Group ( www.board3.de )
|
||||
* @license http://opensource.org/licenses/gpl-license.php GNU Public License
|
||||
*
|
||||
*/
|
||||
|
||||
/**
|
||||
* @ignore
|
||||
*/
|
||||
if (!defined('IN_PHPBB'))
|
||||
{
|
||||
exit;
|
||||
}
|
||||
|
||||
/**
|
||||
* @package Modulname
|
||||
*/
|
||||
class portal_attachments_module
|
||||
{
|
||||
/**
|
||||
* Allowed columns: Just sum up your options (Exp: left + right = 10)
|
||||
* top 1
|
||||
* left 2
|
||||
* center 4
|
||||
* right 8
|
||||
* bottom 16
|
||||
*/
|
||||
public $columns = 31;
|
||||
|
||||
/**
|
||||
* Default modulename
|
||||
*/
|
||||
public $name = 'PORTAL_ATTACHMENTS';
|
||||
|
||||
/**
|
||||
* Default module-image:
|
||||
* file must be in "{T_THEME_PATH}/images/portal/"
|
||||
*/
|
||||
public $image_src = 'portal_attach.png';
|
||||
|
||||
/**
|
||||
* module-language file
|
||||
* file must be in "language/{$user->lang}/mods/portal/"
|
||||
*/
|
||||
public $language = 'portal_attachments_module';
|
||||
|
||||
public function get_template_center($module_id)
|
||||
{
|
||||
return $this->parse_template($module_id, 'center');
|
||||
}
|
||||
|
||||
public function get_template_side($module_id)
|
||||
{
|
||||
return $this->parse_template($module_id, 'side');
|
||||
}
|
||||
|
||||
public function get_template_acp($module_id)
|
||||
{
|
||||
return array(
|
||||
'title' => 'ACP_PORTAL_ATTACHMENTS_NUMBER_SETTINGS',
|
||||
'vars' => array(
|
||||
'legend1' => 'ACP_PORTAL_ATTACHMENTS_NUMBER_SETTINGS',
|
||||
'board3_attachments_number_' . $module_id => array('lang' => 'PORTAL_ATTACHMENTS_NUMBER' , 'validate' => 'int', 'type' => 'text:3:3', 'explain' => true),
|
||||
'board3_attach_max_length_' . $module_id => array('lang' => 'PORTAL_ATTACHMENTS_MAX_LENGTH' , 'validate' => 'int', 'type' => 'text:3:3', 'explain' => true),
|
||||
'board3_attachments_forum_ids_' . $module_id => array('lang' => 'PORTAL_ATTACHMENTS_FORUM_IDS', 'validate' => 'string', 'type' => 'custom', 'explain' => true, 'method' => 'select_forums', 'submit' => 'store_selected_forums'),
|
||||
'board3_attachments_forum_exclude_' . $module_id => array('lang' => 'PORTAL_ATTACHMENTS_FORUM_EXCLUDE', 'validate' => 'bool', 'type' => 'radio:yes_no', 'explain' => true),
|
||||
'board3_attachments_filetype_' . $module_id => array('lang' => 'PORTAL_ATTACHMENTS_FILETYPE', 'validate' => 'string', 'type' => 'custom', 'explain' => true, 'method' => 'select_filetype', 'submit' => 'store_filetypes'),
|
||||
'board3_attachments_exclude_' . $module_id => array('lang' => 'PORTAL_ATTACHMENTS_EXCLUDE', 'validate' => 'bool', 'type' => 'radio:yes_no', 'explain' => true),
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* API functions
|
||||
*/
|
||||
public function install($module_id)
|
||||
{
|
||||
set_config('board3_attachments_number_' . $module_id, 8);
|
||||
set_config('board3_attach_max_length_' . $module_id, 15);
|
||||
set_config('board3_attachments_forum_ids_' . $module_id, '');
|
||||
set_config('board3_attachments_forum_exclude_' . $module_id, 0);
|
||||
set_config('board3_attachments_filetype_' . $module_id, '');
|
||||
set_config('board3_attachments_exclude_' . $module_id, 0);
|
||||
return true;
|
||||
}
|
||||
|
||||
public function uninstall($module_id)
|
||||
{
|
||||
global $db;
|
||||
|
||||
$del_config = array(
|
||||
'board3_attachments_number_' . $module_id,
|
||||
'board3_attach_max_length_' . $module_id,
|
||||
'board3_attachments_forum_ids_' . $module_id,
|
||||
'board3_attachments_forum_exclude_' . $module_id,
|
||||
'board3_attachments_filetype_' . $module_id,
|
||||
'board3_attachments_exclude_' . $module_id,
|
||||
);
|
||||
$sql = 'DELETE FROM ' . CONFIG_TABLE . '
|
||||
WHERE ' . $db->sql_in_set('config_name', $del_config);
|
||||
return $db->sql_query($sql);
|
||||
}
|
||||
|
||||
// Create select box for attachment filetype
|
||||
public function select_filetype($value, $key, $module_id)
|
||||
{
|
||||
global $db, $user, $config;
|
||||
|
||||
// Get extensions
|
||||
$sql = 'SELECT *
|
||||
FROM ' . EXTENSIONS_TABLE . '
|
||||
ORDER BY extension ASC';
|
||||
$result = $db->sql_query($sql);
|
||||
|
||||
while ($row = $db->sql_fetchrow($result))
|
||||
{
|
||||
$extensions[] = $row;
|
||||
}
|
||||
|
||||
$selected = array();
|
||||
if(isset($config['board3_attachments_filetype_' . $module_id]) && strlen($config['board3_attachments_filetype_' . $module_id]) > 0)
|
||||
{
|
||||
$selected = explode(',', $config['board3_attachments_filetype_' . $module_id]);
|
||||
}
|
||||
|
||||
// Build options
|
||||
$ext_options = '<select id="' . $key . '" name="' . $key . '[]" multiple="multiple">';
|
||||
foreach ($extensions as $id => $ext)
|
||||
{
|
||||
$ext_options .= '<option value="' . $ext['extension'] . '"' . ((in_array($ext['extension'], $selected)) ? ' selected="selected"' : '') . '>' . $ext['extension'] . '</option>';
|
||||
}
|
||||
$ext_options .= '</select>';
|
||||
|
||||
return $ext_options;
|
||||
}
|
||||
|
||||
// Store selected filetypes
|
||||
public function store_filetypes($key, $module_id)
|
||||
{
|
||||
global $db, $cache;
|
||||
|
||||
// Get selected extensions
|
||||
$values = request_var($key, array(0 => ''));
|
||||
|
||||
$filetypes = implode(',', $values);
|
||||
|
||||
set_config('board3_attachments_filetype_' . $module_id, $filetypes);
|
||||
|
||||
}
|
||||
|
||||
// Create forum select box
|
||||
public function select_forums($value, $key)
|
||||
{
|
||||
global $user, $config;
|
||||
|
||||
$forum_list = make_forum_select(false, false, true, true, true, false, true);
|
||||
|
||||
$selected = array();
|
||||
if(isset($config[$key]) && strlen($config[$key]) > 0)
|
||||
{
|
||||
$selected = explode(',', $config[$key]);
|
||||
}
|
||||
// Build forum options
|
||||
$s_forum_options = '<select id="' . $key . '" name="' . $key . '[]" multiple="multiple">';
|
||||
foreach ($forum_list as $f_id => $f_row)
|
||||
{
|
||||
$s_forum_options .= '<option value="' . $f_id . '"' . ((in_array($f_id, $selected)) ? ' selected="selected"' : '') . (($f_row['disabled']) ? ' disabled="disabled" class="disabled-option"' : '') . '>' . $f_row['padding'] . $f_row['forum_name'] . '</option>';
|
||||
}
|
||||
$s_forum_options .= '</select>';
|
||||
|
||||
return $s_forum_options;
|
||||
|
||||
}
|
||||
|
||||
// Store selected forums
|
||||
public function store_selected_forums($key)
|
||||
{
|
||||
global $db, $cache;
|
||||
|
||||
// Get selected extensions
|
||||
$values = request_var($key, array(0 => ''));
|
||||
$news = implode(',', $values);
|
||||
set_config($key, $news);
|
||||
}
|
||||
|
||||
/**
|
||||
* Parse template variables for module
|
||||
*
|
||||
* @param int $module_id Module ID
|
||||
* @param string $type Module type (center or side)
|
||||
*/
|
||||
protected function parse_template($module_id, $type)
|
||||
{
|
||||
global $config, $template, $db, $user, $auth, $phpEx, $phpbb_root_path;
|
||||
|
||||
$attach_forums = false;
|
||||
$where = '';
|
||||
$filetypes = array();
|
||||
|
||||
// Get filetypes and put them into an array
|
||||
if(isset($config['board3_attachments_filetype_' . $module_id]) && strlen($config['board3_attachments_filetype_' . $module_id]) > 0)
|
||||
{
|
||||
$filetypes = explode(',', $config['board3_attachments_filetype_' . $module_id]);
|
||||
}
|
||||
|
||||
if($config['board3_attachments_forum_ids_' . $module_id] !== '')
|
||||
{
|
||||
$attach_forums_config = (strpos($config['board3_attachments_forum_ids_' . $module_id], ',') !== false) ? explode(',', $config['board3_attachments_forum_ids_' . $module_id]) : array($config['board3_attachments_forum_ids_' . $module_id]);
|
||||
$forum_list = array_unique(array_keys($auth->acl_getf('f_read', true)));
|
||||
|
||||
if($config['board3_attachments_forum_exclude_' . $module_id])
|
||||
{
|
||||
$forum_list = array_unique(array_diff($forum_list, $attach_forums_config));
|
||||
}
|
||||
else
|
||||
{
|
||||
$forum_list = array_unique(array_intersect($attach_forums_config, $forum_list));
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
$forum_list = array_unique(array_keys($auth->acl_getf('f_read', true)));
|
||||
}
|
||||
|
||||
if(sizeof($forum_list))
|
||||
{
|
||||
$attach_forums = true;
|
||||
$where = 'AND ' . $db->sql_in_set('t.forum_id', $forum_list);
|
||||
}
|
||||
|
||||
if(sizeof($filetypes))
|
||||
{
|
||||
if($config['board3_attachments_exclude_' . $module_id])
|
||||
{
|
||||
$where .= ' AND ' . $db->sql_in_set('a.extension', $filetypes, true);
|
||||
}
|
||||
else
|
||||
{
|
||||
$where .= ' AND ' . $db->sql_in_set('a.extension', $filetypes);
|
||||
}
|
||||
}
|
||||
|
||||
if($attach_forums === true)
|
||||
{
|
||||
// Just grab all attachment info from database
|
||||
$sql = 'SELECT
|
||||
a.*,
|
||||
t.forum_id
|
||||
FROM
|
||||
' . ATTACHMENTS_TABLE . ' a,
|
||||
' . TOPICS_TABLE . ' t
|
||||
WHERE
|
||||
a.topic_id <> 0
|
||||
AND a.topic_id = t.topic_id
|
||||
' . $where . '
|
||||
ORDER BY
|
||||
filetime ' . ((!$config['display_order']) ? 'DESC' : 'ASC') . ', post_msg_id ASC';
|
||||
$result = $db->sql_query_limit($sql, $config['board3_attachments_number_' . $module_id]);
|
||||
|
||||
while ($row = $db->sql_fetchrow($result))
|
||||
{
|
||||
$size_lang = ($row['filesize'] >= 1048576) ? $user->lang['MIB'] : (($row['filesize'] >= 1024) ? $user->lang['KIB'] : $user->lang['BYTES']);
|
||||
$row['filesize'] = ($row['filesize'] >= 1048576) ? round((round($row['filesize'] / 1048576 * 100) / 100), 2) : (($row['filesize'] >= 1024) ? round((round($row['filesize'] / 1024 * 100) / 100), 2) : $row['filesize']);
|
||||
|
||||
$raw_filename = utf8_substr($row['real_filename'], 0, strrpos($row['real_filename'], '.'));
|
||||
$replace = character_limit($raw_filename, $config['board3_attach_max_length_' . $module_id]);
|
||||
|
||||
$template->assign_block_vars('attach_' . $type, array(
|
||||
'FILESIZE' => $row['filesize'] . ' ' . $size_lang,
|
||||
'FILETIME' => $user->format_date($row['filetime']),
|
||||
'DOWNLOAD_COUNT' => (int) $row['download_count'], // grab downloads count
|
||||
'FILENAME' => $replace,
|
||||
'REAL_FILENAME' => $row['real_filename'],
|
||||
'PHYSICAL_FILENAME' => basename($row['physical_filename']),
|
||||
'ATTACH_ID' => $row['attach_id'],
|
||||
'POST_IDS' => (!empty($post_ids[$row['attach_id']])) ? $post_ids[$row['attach_id']] : '',
|
||||
'POST_MSG_ID' => $row['post_msg_id'], // grab post ID to redirect to post
|
||||
'U_FILE' => append_sid($phpbb_root_path . 'download/file.' . $phpEx, 'id=' . $row['attach_id']),
|
||||
'U_TOPIC' => append_sid($phpbb_root_path . 'viewtopic.'.$phpEx, 'p='.$row['post_msg_id'].'#p'.$row['post_msg_id']),
|
||||
));
|
||||
}
|
||||
$db->sql_freeresult($result);
|
||||
|
||||
$template->assign_var('S_DISPLAY_ATTACHMENTS', true);
|
||||
}
|
||||
else
|
||||
{
|
||||
$template->assign_var('S_DISPLAY_ATTACHMENTS', false);
|
||||
}
|
||||
|
||||
return 'attachments_' . $type . '.html';
|
||||
}
|
||||
}
|
||||
@@ -1,181 +0,0 @@
|
||||
<?php
|
||||
/**
|
||||
*
|
||||
* @package Board3 Portal v2 - Birthday List
|
||||
* @copyright (c) Board3 Group ( www.board3.de )
|
||||
* @license http://opensource.org/licenses/gpl-license.php GNU Public License
|
||||
*
|
||||
*/
|
||||
|
||||
/**
|
||||
* @ignore
|
||||
*/
|
||||
if (!defined('IN_PHPBB'))
|
||||
{
|
||||
exit;
|
||||
}
|
||||
|
||||
/**
|
||||
* @package Birthday List
|
||||
*/
|
||||
class portal_birthday_list_module
|
||||
{
|
||||
/**
|
||||
* Allowed columns: Just sum up your options (Exp: left + right = 10)
|
||||
* top 1
|
||||
* left 2
|
||||
* center 4
|
||||
* right 8
|
||||
* bottom 16
|
||||
*/
|
||||
public $columns = 10;
|
||||
|
||||
/**
|
||||
* Default modulename
|
||||
*/
|
||||
public $name = 'BIRTHDAYS';
|
||||
|
||||
/**
|
||||
* Default module-image:
|
||||
* file must be in "{T_THEME_PATH}/images/portal/"
|
||||
*/
|
||||
public $image_src = 'portal_birthday.png';
|
||||
|
||||
/**
|
||||
* module-language file
|
||||
* file must be in "language/{$user->lang}/mods/portal/"
|
||||
*/
|
||||
public $language = 'portal_birthday_list_module';
|
||||
|
||||
public function get_template_side($module_id)
|
||||
{
|
||||
global $config, $template, $db, $user, $phpbb_root_path;
|
||||
|
||||
// Generate birthday list if required ... / borrowed from index.php 3.0.6
|
||||
$birthday_list = $birthday_ahead_list = '';
|
||||
|
||||
if ($config['load_birthdays'] && $config['allow_birthdays'])
|
||||
{
|
||||
$time = $user->create_datetime();
|
||||
$now = phpbb_gmgetdate($time->getTimestamp() + $time->getOffset());
|
||||
$cache_days = $config['board3_birthdays_ahead_' . $module_id];
|
||||
$sql_days = '';
|
||||
while ($cache_days > 0)
|
||||
{
|
||||
$day = phpbb_gmgetdate($time->getTimestamp() + 86400 * $cache_days + $time->getOffset());
|
||||
$like_expression = $db->sql_like_expression($db->any_char . (sprintf('%2d-%2d-', $day['mday'], $day['mon'])) . $db->any_char);
|
||||
$sql_days .= " OR u.user_birthday " . $like_expression . "";
|
||||
$cache_days--;
|
||||
}
|
||||
|
||||
switch ($db->sql_layer)
|
||||
{
|
||||
case 'mssql':
|
||||
case 'mssql_odbc':
|
||||
$order_by = 'u.user_birthday ASC';
|
||||
break;
|
||||
|
||||
default:
|
||||
$order_by = 'SUBSTRING(u.user_birthday FROM 4 FOR 2) ASC, SUBSTRING(u.user_birthday FROM 1 FOR 2) ASC, u.username_clean ASC';
|
||||
break;
|
||||
}
|
||||
|
||||
$sql = 'SELECT u.user_id, u.username, u.user_colour, u.user_birthday
|
||||
FROM ' . USERS_TABLE . ' u
|
||||
LEFT JOIN ' . BANLIST_TABLE . " b ON (u.user_id = b.ban_userid)
|
||||
WHERE (b.ban_id IS NULL
|
||||
OR b.ban_exclude = 1)
|
||||
AND (u.user_birthday LIKE '" . $db->sql_escape(sprintf('%2d-%2d-', $now['mday'], $now['mon'])) . "%' {$sql_days})
|
||||
AND u.user_type IN (" . USER_NORMAL . ', ' . USER_FOUNDER . ')
|
||||
ORDER BY ' . $order_by;
|
||||
$result = $db->sql_query($sql);
|
||||
$today = sprintf('%2d-%2d-', $now['mday'], $now['mon']);
|
||||
|
||||
while ($row = $db->sql_fetchrow($result))
|
||||
{
|
||||
if (substr($row['user_birthday'], 0, 6) == $today)
|
||||
{
|
||||
$birthday_list = true;
|
||||
$template->assign_block_vars('board3_birthday_list', array(
|
||||
'USER' => get_username_string('full', $row['user_id'], $row['username'], $row['user_colour']),
|
||||
'AGE' => ($age = (int) substr($row['user_birthday'], -4)) ? ' (' . ($now['year'] - $age) . ')' : '',
|
||||
));
|
||||
}
|
||||
elseif ($config['board3_birthdays_ahead_' . $module_id] > 0)
|
||||
{
|
||||
$birthday_ahead_list = true;
|
||||
$template->assign_block_vars('board3_birthday_ahead_list', array(
|
||||
'USER' => get_username_string('full', $row['user_id'], $row['username'], $row['user_colour']),
|
||||
'AGE' => ($age = (int) substr($row['user_birthday'], -4)) ? ' (' . ($now['year'] - $age) . ')' : '',
|
||||
'DATE' => $this->format_birthday($user, $row['user_birthday'], 'd M'),
|
||||
));
|
||||
}
|
||||
}
|
||||
$db->sql_freeresult($result);
|
||||
}
|
||||
|
||||
// Assign index specific vars
|
||||
$template->assign_vars(array(
|
||||
'BIRTHDAY_LIST' => $birthday_list,
|
||||
'BIRTHDAYS_AHEAD_LIST' => ($config['board3_birthdays_ahead_' . $module_id]) ? $birthday_ahead_list : '',
|
||||
'L_BIRTHDAYS_AHEAD' => sprintf($user->lang['BIRTHDAYS_AHEAD'], $config['board3_birthdays_ahead_' . $module_id]),
|
||||
'S_DISPLAY_BIRTHDAY_LIST' => ($config['load_birthdays']) ? true : false,
|
||||
'S_DISPLAY_BIRTHDAY_AHEAD_LIST' => ($config['board3_birthdays_ahead_' . $module_id] > 0) ? true : false,
|
||||
));
|
||||
|
||||
return 'birthdays_side.html';
|
||||
}
|
||||
|
||||
public function get_template_acp($module_id)
|
||||
{
|
||||
return array(
|
||||
'title' => 'ACP_PORTAL_BIRTHDAYS_SETTINGS',
|
||||
'vars' => array(
|
||||
'legend1' => 'ACP_PORTAL_BIRTHDAYS_SETTINGS',
|
||||
'board3_birthdays_ahead_' . $module_id => array('lang' => 'PORTAL_BIRTHDAYS_AHEAD', 'validate' => 'int', 'type' => 'text:3:3', 'explain' => true),
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* API functions
|
||||
*/
|
||||
public function install($module_id)
|
||||
{
|
||||
set_config('board3_birthdays_ahead_' . $module_id, 30);
|
||||
return true;
|
||||
}
|
||||
|
||||
public function uninstall($module_id)
|
||||
{
|
||||
global $db;
|
||||
|
||||
$del_config = array(
|
||||
'board3_birthdays_ahead_' . $module_id,
|
||||
);
|
||||
$sql = 'DELETE FROM ' . CONFIG_TABLE . '
|
||||
WHERE ' . $db->sql_in_set('config_name', $del_config);
|
||||
return $db->sql_query($sql);
|
||||
}
|
||||
|
||||
/**
|
||||
* Format birthday for span title
|
||||
*
|
||||
* @param object $user phpBB user object
|
||||
* @param string $birthday User's birthday from database
|
||||
* @param string $date_settings Settings for date() function
|
||||
*/
|
||||
protected function format_birthday($user, $birthday, $date_settings)
|
||||
{
|
||||
if (!preg_match('/(?:[0-9])+-+(?:[0-9]{2})+-+(?:[0-9]{4})/', $birthday, $match))
|
||||
{
|
||||
return '';
|
||||
}
|
||||
|
||||
$date = explode('-', $birthday);
|
||||
$time = mktime(0, 0, 0, $date[1], $date[0], $date[2]);
|
||||
$lang_dates = array_filter($user->lang['datetime'], 'is_string');
|
||||
|
||||
return strtr(date($date_settings, $time), $lang_dates);
|
||||
}
|
||||
}
|
||||
@@ -1,691 +0,0 @@
|
||||
<?php
|
||||
/**
|
||||
*
|
||||
* @package Board3 Portal v2 - Calendar
|
||||
* @copyright (c) Board3 Group ( www.board3.de )
|
||||
* @license http://opensource.org/licenses/gpl-license.php GNU Public License
|
||||
*
|
||||
*/
|
||||
|
||||
/**
|
||||
* @ignore
|
||||
*/
|
||||
if (!defined('IN_PHPBB'))
|
||||
{
|
||||
exit;
|
||||
}
|
||||
|
||||
/**
|
||||
* @package Calendar
|
||||
*/
|
||||
class portal_calendar_module
|
||||
{
|
||||
/**
|
||||
* Allowed columns: Just sum up your options (Exp: left + right = 10)
|
||||
* top 1
|
||||
* left 2
|
||||
* center 4
|
||||
* right 8
|
||||
* bottom 16
|
||||
*/
|
||||
public $columns = 10;
|
||||
|
||||
/**
|
||||
* Default modulename
|
||||
*/
|
||||
public $name = 'PORTAL_CALENDAR';
|
||||
|
||||
/**
|
||||
* Default module-image:
|
||||
* file must be in "{T_THEME_PATH}/images/portal/"
|
||||
*/
|
||||
public $image_src = 'portal_calendar.png';
|
||||
|
||||
/**
|
||||
* module-language file
|
||||
* file must be in "language/{$user->lang}/mods/portal/"
|
||||
*/
|
||||
public $language = 'portal_calendar_module';
|
||||
|
||||
/**
|
||||
* custom acp template
|
||||
* file must be in "adm/style/portal/"
|
||||
*/
|
||||
public $custom_acp_tpl = 'acp_portal_calendar';
|
||||
|
||||
/**
|
||||
* additional variables
|
||||
*/
|
||||
private $mini_cal_fdow;
|
||||
|
||||
/**
|
||||
* User datetime object
|
||||
*/
|
||||
private $time;
|
||||
|
||||
/**
|
||||
* constants
|
||||
*/
|
||||
const TIME_DAY = 86400;
|
||||
const DAYS_PER_WEEK = 6; // indexes start at 0
|
||||
const MONTHS_PER_YEAR = 12;
|
||||
|
||||
public function get_template_side($module_id)
|
||||
{
|
||||
global $config, $template, $user, $phpbb_root_path, $phpEx, $db, $portal_root_path;
|
||||
|
||||
$portal_config = obtain_portal_config();
|
||||
|
||||
// 0 = Sunday first - 1 = Monday first. ;-)
|
||||
if ($config['board3_sunday_first_' . $module_id])
|
||||
{
|
||||
$this->mini_cal_fdow = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->mini_cal_fdow = 1;
|
||||
}
|
||||
|
||||
// get the calendar month
|
||||
$this->mini_cal_month = 0;
|
||||
if(isset($_GET['m' . $module_id]) || isset($_POST['m' . $module_id]))
|
||||
{
|
||||
$this->mini_cal_month = request_var('m' . $module_id, 0);
|
||||
}
|
||||
|
||||
// initialise some variables
|
||||
$this->time = $user->create_datetime();
|
||||
$now = phpbb_gmgetdate($this->time->getTimestamp() + $this->time->getOffset());
|
||||
$today_timestamp = $now[0];
|
||||
$mini_cal_today = date('Ymd', $today_timestamp - date('Z'));
|
||||
$this->stamp = $today_timestamp;
|
||||
$s_cal_month = ($this->mini_cal_month != 0) ? $this->mini_cal_month . ' month' : $mini_cal_today;
|
||||
$this->getMonth($s_cal_month);
|
||||
$mini_cal_count = $this->mini_cal_fdow;
|
||||
$mini_cal_this_year = $this->dateYYYY;
|
||||
$mini_cal_this_month = $this->dateMM;
|
||||
$mini_cal_this_day = $this->dateDD;
|
||||
$mini_cal_month_days = $this->daysMonth;
|
||||
|
||||
// output our general calendar bits
|
||||
$down = $this->mini_cal_month - 1;
|
||||
$up = $this->mini_cal_month + 1;
|
||||
$prev_month = '<a href="' . append_sid("{$phpbb_root_path}app.$phpEx", "controller=portal&m$module_id=$down#minical$module_id") . '"><img src="./../' . $portal_root_path . 'styles/' . $user->style['style_path'] . '/theme/images/portal/cal_icon_left_arrow.png' . '" title="' . $user->lang['VIEW_PREVIOUS_MONTH'] . '" height="16" width="16" alt="<<" /></a>';
|
||||
$next_month = '<a href="' . append_sid("{$phpbb_root_path}app.$phpEx", "controller=portal&m$module_id=$up#minical$module_id") . '"><img src="./../' . $portal_root_path . 'styles/' . $user->style['style_path'] . '/theme/images/portal/cal_icon_right_arrow.png' . '" title="' . $user->lang['VIEW_NEXT_MONTH'] . '" height="16" width="16" alt=">>" /></a>';
|
||||
|
||||
$template->assign_block_vars('minical', array(
|
||||
'S_SUNDAY_FIRST' => ($config['board3_sunday_first_' . $module_id]) ? true : false,
|
||||
'L_MINI_CAL_MONTH' => (($config['board3_long_month_' . $module_id]) ? $user->lang['mini_cal']['long_month'][$this->day[0][1]] : $user->lang['mini_cal']['month'][$this->day[0][1]]) . " " . $this->day[0][2],
|
||||
'L_MINI_CAL_SUN' => '<span style="color: ' . $config['board3_calendar_sunday_color_' . $module_id] . ';">' . $user->lang['mini_cal']['day'][1] . '</span>',
|
||||
'L_MINI_CAL_MON' => $user->lang['mini_cal']['day'][2],
|
||||
'L_MINI_CAL_TUE' => $user->lang['mini_cal']['day'][3],
|
||||
'L_MINI_CAL_WED' => $user->lang['mini_cal']['day'][4],
|
||||
'L_MINI_CAL_THU' => $user->lang['mini_cal']['day'][5],
|
||||
'L_MINI_CAL_FRI' => $user->lang['mini_cal']['day'][6],
|
||||
'L_MINI_CAL_SAT' => $user->lang['mini_cal']['day'][7],
|
||||
'U_PREV_MONTH' => $prev_month,
|
||||
'U_NEXT_MONTH' => $next_month,
|
||||
'S_DISPLAY_EVENTS' => ($config['board3_display_events_' . $module_id]) ? true : false,
|
||||
'MODULE_ID' => $module_id,
|
||||
));
|
||||
|
||||
// output the days for the current month
|
||||
for($i = 0; $i < $mini_cal_month_days;)
|
||||
{
|
||||
// is this the first day of the week?
|
||||
if($mini_cal_count == $this->mini_cal_fdow)
|
||||
{
|
||||
$template->assign_block_vars('minical.mini_cal_row', array(
|
||||
'MODULE_ID' => $module_id,
|
||||
));
|
||||
}
|
||||
|
||||
// is this a valid weekday?
|
||||
if($mini_cal_count == ($this->day[$i][3]))
|
||||
{
|
||||
$mini_cal_this_day = $this->day[$i][0];
|
||||
|
||||
$d_mini_cal_today = $mini_cal_this_year . (($mini_cal_this_month <= 9) ? '0' . $mini_cal_this_month : $mini_cal_this_month) . (($mini_cal_this_day <= 9) ? '0' . $mini_cal_this_day : $mini_cal_this_day);
|
||||
$mini_cal_day = ($mini_cal_today == $d_mini_cal_today) ? '<span style="font-weight: bold; color: ' . $config['board3_calendar_today_color_' . $module_id] . ';">' . $mini_cal_this_day . '</span>' : $mini_cal_this_day;
|
||||
|
||||
$template->assign_block_vars('minical.mini_cal_row.mini_cal_days', array(
|
||||
'MINI_CAL_DAY' => ($mini_cal_count == 0) ? '<span style="color: ' . $config['board3_calendar_sunday_color_' . $module_id] . ';">' . $mini_cal_day . '</span>' : $mini_cal_day)
|
||||
);
|
||||
$i++;
|
||||
}
|
||||
// no day
|
||||
else
|
||||
{
|
||||
$template->assign_block_vars('minical.mini_cal_row.mini_cal_days', array(
|
||||
'MINI_CAL_DAY' => ' ')
|
||||
);
|
||||
}
|
||||
|
||||
// is this the last day of the week?
|
||||
if ($mini_cal_count == self::DAYS_PER_WEEK)
|
||||
{
|
||||
// if so then reset the count
|
||||
$mini_cal_count = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
// otherwise increment the count
|
||||
$mini_cal_count++;
|
||||
}
|
||||
}
|
||||
|
||||
// fill table with empty strings
|
||||
while ($mini_cal_count <= self::DAYS_PER_WEEK)
|
||||
{
|
||||
$template->assign_block_vars('minical.mini_cal_row.mini_cal_days', array(
|
||||
'MINI_CAL_DAY' => ' ')
|
||||
);
|
||||
$mini_cal_count++;
|
||||
}
|
||||
|
||||
/*
|
||||
* Let's start displaying the events
|
||||
* make sure we only display events in the future
|
||||
*/
|
||||
$events = $this->utf_unserialize($portal_config['board3_calendar_events_' . $module_id]);
|
||||
|
||||
if(!empty($events) && $config['board3_display_events_' . $module_id])
|
||||
{
|
||||
// we sort the $events array by the start time
|
||||
foreach($events as $key => $cur_event)
|
||||
{
|
||||
$time_ary[$key] = $cur_event['start_time'];
|
||||
}
|
||||
array_multisort($time_ary, SORT_NUMERIC, $events);
|
||||
|
||||
$groups_ary = get_user_groups();
|
||||
|
||||
foreach($events as $key => $cur_event)
|
||||
{
|
||||
if(($cur_event['start_time'] + $user->timezone + $user->dst) >= $today_timestamp ||
|
||||
($cur_event['end_time'] + $user->timezone + $user->dst) >= $today_timestamp ||
|
||||
(($cur_event['start_time'] + $user->timezone + $user->dst + self::TIME_DAY) >= $today_timestamp && $cur_event['all_day']))
|
||||
{
|
||||
$cur_permissions = explode(',', $cur_event['permission']);
|
||||
$permission_check = array_intersect($groups_ary, $cur_permissions);
|
||||
|
||||
if(!empty($permission_check) || $cur_event['permission'] == '')
|
||||
{
|
||||
// check if this is an external link
|
||||
if (isset($cur_event['url']) && strpos($cur_event['url'], generate_board_url()) === false)
|
||||
{
|
||||
$is_external = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
$is_external = false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Current events
|
||||
*
|
||||
* Events are treated as current if the following is met:
|
||||
* - We have an all day event and the start of that event is less than 1 day (86400 seconds) away
|
||||
* - We have a normal event with a start that is less then 1 day away and that hasn't ended yet
|
||||
*/
|
||||
if((($cur_event['start_time'] + $user->timezone + $user->dst - $today_timestamp) <= self::TIME_DAY && $cur_event['all_day']) ||
|
||||
(($cur_event['start_time'] + $user->timezone + $user->dst - $today_timestamp) <= self::TIME_DAY && ($cur_event['end_time'] + $user->timezone + $user->dst) >= $today_timestamp))
|
||||
{
|
||||
$template->assign_block_vars('minical.cur_events', array(
|
||||
'EVENT_URL' => (isset($cur_event['url']) && $cur_event['url'] != '') ? $this->validate_url($cur_event['url']) : '',
|
||||
'EVENT_TITLE' => $cur_event['title'],
|
||||
'START_TIME' => $user->format_date($cur_event['start_time'], 'j. M Y, H:i'),
|
||||
'END_TIME' => (!empty($cur_event['end_time'])) ? $user->format_date($cur_event['end_time'], 'j. M Y, H:i') : false,
|
||||
'EVENT_DESC' => (isset($cur_event['desc']) && $cur_event['desc'] != '') ? $cur_event['desc'] : '',
|
||||
'ALL_DAY' => ($cur_event['all_day']) ? true : false,
|
||||
'MODULE_ID' => $module_id,
|
||||
'EVENT_URL_NEW_WINDOW' => ($is_external && $config['board3_events_url_new_window_' . $module_id]) ? true : false,
|
||||
));
|
||||
}
|
||||
else
|
||||
{
|
||||
$template->assign_block_vars('minical.upcoming_events', array(
|
||||
'EVENT_URL' => (isset($cur_event['url']) && $cur_event['url'] != '') ? $this->validate_url($cur_event['url']) : '',
|
||||
'EVENT_TITLE' => $cur_event['title'],
|
||||
'START_TIME' => $user->format_date($cur_event['start_time'], 'j. M Y, H:i'),
|
||||
'END_TIME' => (!$cur_event['all_day']) ? $user->format_date($cur_event['end_time'], 'j. M Y, H:i') : '',
|
||||
'EVENT_DESC' => (isset($cur_event['desc']) && $cur_event['desc'] != '') ? $cur_event['desc'] : '',
|
||||
'ALL_DAY' => (($cur_event['start_time'] - $cur_event['end_time']) == 1) ? true : false,
|
||||
'MODULE_ID' => $module_id,
|
||||
'EVENT_URL_NEW_WINDOW' => ($is_external && $config['board3_events_url_new_window_' . $module_id]) ? true : false,
|
||||
));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return 'calendar_side.html';
|
||||
}
|
||||
|
||||
public function get_template_acp($module_id)
|
||||
{
|
||||
return array(
|
||||
'title' => 'ACP_PORTAL_CALENDAR',
|
||||
'vars' => array(
|
||||
'legend1' => 'ACP_PORTAL_CALENDAR',
|
||||
'board3_calendar_today_color_' . $module_id => array('lang' => 'PORTAL_CALENDAR_TODAY_COLOR' , 'validate' => 'string', 'type' => 'text:10:10', 'explain' => true),
|
||||
'board3_calendar_sunday_color_' . $module_id => array('lang' => 'PORTAL_CALENDAR_SUNDAY_COLOR' , 'validate' => 'string', 'type' => 'text:10:10', 'explain' => true),
|
||||
'board3_long_month_' . $module_id => array('lang' => 'PORTAL_LONG_MONTH' , 'validate' => 'bool', 'type' => 'radio:yes_no', 'explain' => true),
|
||||
'board3_sunday_first_' . $module_id => array('lang' => 'PORTAL_SUNDAY_FIRST' , 'validate' => 'bool', 'type' => 'radio:yes_no', 'explain' => true),
|
||||
'board3_display_events_' . $module_id => array('lang' => 'PORTAL_DISPLAY_EVENTS', 'validate' => 'bool', 'type' => 'radio:yes_no', 'explain' => true),
|
||||
'board3_events_url_new_window_' . $module_id => array('lang' => 'PORTAL_EVENTS_URL_NEW_WINDOW', 'validate' => 'bool', 'type' => 'radio:yes_no', 'explain' => false),
|
||||
'board3_events_' . $module_id => array('lang' => 'PORTAL_EVENTS_MANAGE', 'validate' => 'string', 'type' => 'custom', 'explain' => false, 'method' => 'manage_events', 'submit' => 'update_events'),
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* API functions
|
||||
*/
|
||||
public function install($module_id)
|
||||
{
|
||||
set_config('board3_sunday_first_' . $module_id, 1);
|
||||
set_config('board3_calendar_today_color_' . $module_id, '#000000');
|
||||
set_config('board3_calendar_sunday_color_' . $module_id, '#FF0000');
|
||||
set_config('board3_long_month_' . $module_id, 0);
|
||||
set_config('board3_display_events_' . $module_id, 0);
|
||||
set_config('board3_events_' . $module_id, '');
|
||||
set_config('board3_events_url_new_window_' . $module_id, 0);
|
||||
|
||||
set_portal_config('board3_calendar_events_' . $module_id, '');
|
||||
return true;
|
||||
}
|
||||
|
||||
public function uninstall($module_id)
|
||||
{
|
||||
global $db;
|
||||
|
||||
$del_config = array(
|
||||
'board3_calendar_events_' . $module_id,
|
||||
);
|
||||
$sql = 'DELETE FROM ' . PORTAL_CONFIG_TABLE . '
|
||||
WHERE ' . $db->sql_in_set('config_name', $del_config);
|
||||
|
||||
$db->sql_query($sql);
|
||||
|
||||
$del_config = array(
|
||||
'board3_sunday_first_' . $module_id,
|
||||
'board3_calendar_today_color_' . $module_id,
|
||||
'board3_calendar_sunday_color_' . $module_id,
|
||||
'board3_long_month_' . $module_id,
|
||||
'board3_display_events_' . $module_id,
|
||||
'board3_events_' . $module_id,
|
||||
'board3_events_url_new_window_' . $module_id,
|
||||
);
|
||||
$sql = 'DELETE FROM ' . CONFIG_TABLE . '
|
||||
WHERE ' . $db->sql_in_set('config_name', $del_config);
|
||||
return $db->sql_query($sql);
|
||||
}
|
||||
|
||||
public function manage_events($value, $key, $module_id)
|
||||
{
|
||||
global $db, $portal_config, $config, $template, $user, $phpEx, $phpbb_admin_path;
|
||||
|
||||
$action = request_var('action', '');
|
||||
$action = (isset($_POST['add'])) ? 'add' : $action;
|
||||
$action = (isset($_POST['save'])) ? 'save' : $action;
|
||||
$link_id = request_var('id', 99999999); // 0 will trigger unwanted behavior, therefore we set a number we should never reach
|
||||
$portal_config = obtain_portal_config();
|
||||
|
||||
$events = (strlen($portal_config['board3_calendar_events_' . $module_id]) >= 1) ? $this->utf_unserialize($portal_config['board3_calendar_events_' . $module_id]) : array();
|
||||
|
||||
$u_action = append_sid($phpbb_admin_path . 'index.' . $phpEx, 'i=portal&mode=config&module_id=' . $module_id);
|
||||
|
||||
switch($action)
|
||||
{
|
||||
// Save changes
|
||||
case 'save':
|
||||
if (!check_form_key('acp_portal'))
|
||||
{
|
||||
trigger_error($user->lang['FORM_INVALID']. adm_back_link($u_action), E_USER_WARNING);
|
||||
}
|
||||
|
||||
$event_title = utf8_normalize_nfc(request_var('event_title', ' ', true));
|
||||
$event_desc = utf8_normalize_nfc(request_var('event_desc', ' ', true));
|
||||
$event_start_day = trim(request_var('event_start_day', ''));
|
||||
$event_start_time = trim(request_var('event_start_time', ''));
|
||||
$event_end_day = trim(request_var('event_end_day', ''));
|
||||
$event_end_time = trim(request_var('event_end_time', ''));
|
||||
$event_all_day = request_var('event_all_day', false); // default to false
|
||||
$event_url = request_var('event_url', ' ');
|
||||
$event_permission = request_var('permission-setting-calendar', array(0 => ''));
|
||||
$groups_ary = array();
|
||||
|
||||
/*
|
||||
* parse the event time
|
||||
* first check for obvious errors, we don't want to waste server resources
|
||||
*/
|
||||
if(strlen($event_start_day) < 9 || strlen($event_start_day) > 10 || (strlen($event_start_time) < 4 && !$event_all_day) || strlen($event_start_time) > 5)
|
||||
{
|
||||
trigger_error($user->lang['ACP_PORTAL_CALENDAR_START_INCORRECT']. adm_back_link($u_action), E_USER_WARNING);
|
||||
}
|
||||
elseif((strlen($event_end_day) < 9 || strlen($event_end_day) > 10 || strlen($event_end_time) < 4 || strlen($event_end_time) > 5) && !$event_all_day)
|
||||
{
|
||||
trigger_error($user->lang['ACP_PORTAL_CALENDAR_END_INCORRECT']. adm_back_link($u_action), E_USER_WARNING);
|
||||
}
|
||||
// Now get the needed numbers out of the entered information
|
||||
$first_start_hyphen = strpos($event_start_day, '-', 0);
|
||||
$second_start_hyphen = strpos($event_start_day, '-', $first_start_hyphen + 1);
|
||||
$start_colon_pos = strpos($event_start_time, ':', 0);
|
||||
$start_day_length = strlen($event_start_day);
|
||||
$start_time_length = strlen($event_start_time);
|
||||
$start_day = (int) substr($event_start_day, 0, $first_start_hyphen);
|
||||
$start_month = (int) substr($event_start_day, $first_start_hyphen + 1, ($second_start_hyphen - $first_start_hyphen - 1));
|
||||
$start_year = (int) substr($event_start_day, $second_start_hyphen + 1, $start_day_length - $second_start_hyphen);
|
||||
$start_hour = (int) substr($event_start_time, 0, $start_colon_pos);
|
||||
$start_minute = (int) substr($event_start_time, $start_colon_pos + 1, ($start_time_length - $start_colon_pos) - 1);
|
||||
|
||||
if(!$event_all_day)
|
||||
{
|
||||
$first_end_hyphen = strpos($event_end_day, '-', 0);
|
||||
$second_end_hyphen = strpos($event_end_day, '-', $first_end_hyphen + 1);
|
||||
$end_colon_pos = strpos($event_end_time, ':', 0);
|
||||
$end_day_length = strlen($event_end_day);
|
||||
$end_time_length = strlen($event_end_time);
|
||||
$end_day = (int) substr($event_end_day, 0, $first_end_hyphen);
|
||||
$end_month = (int) substr($event_end_day, $first_end_hyphen + 1, ($second_end_hyphen - $first_end_hyphen - 1));
|
||||
$end_year = (int) substr($event_end_day, $second_end_hyphen + 1, $end_day_length - $second_end_hyphen);
|
||||
$end_hour = (int) substr($event_end_time, 0, $end_colon_pos);
|
||||
$end_minute = (int) substr($event_end_time, $end_colon_pos + 1, ($end_time_length - $end_colon_pos) - 1);
|
||||
}
|
||||
|
||||
// UNIX timestamps
|
||||
$start_time = gmmktime($start_hour, $start_minute, 0, $start_month, $start_day, $start_year) - $user->timezone - $user->dst;
|
||||
$end_time = (!$event_all_day) ? gmmktime($end_hour, $end_minute, 0, $end_month, $end_day, $end_year) - $user->timezone - $user->dst : '';
|
||||
|
||||
if(($end_time) <= time() && !(($start_time + self::TIME_DAY) >= time() && $event_all_day))
|
||||
{
|
||||
trigger_error($user->lang['ACP_PORTAL_CALENDAR_EVENT_PAST']. adm_back_link($u_action), E_USER_WARNING);
|
||||
}
|
||||
elseif($end_time < $start_time && !$event_all_day)
|
||||
{
|
||||
trigger_error($user->lang['ACP_PORTAL_CALENDAR_EVENT_START_FIRST']. adm_back_link($u_action), E_USER_WARNING);
|
||||
}
|
||||
|
||||
// get groups and check if the selected groups actually exist
|
||||
$sql = 'SELECT group_id
|
||||
FROM ' . GROUPS_TABLE . '
|
||||
ORDER BY group_id ASC';
|
||||
$result = $db->sql_query($sql);
|
||||
while($row = $db->sql_fetchrow($result))
|
||||
{
|
||||
$groups_ary[] = $row['group_id'];
|
||||
}
|
||||
$db->sql_freeresult($result);
|
||||
|
||||
$event_permission = array_intersect($event_permission, $groups_ary);
|
||||
$event_permission = implode(',', $event_permission);
|
||||
|
||||
// Check for errors
|
||||
if (!$event_title)
|
||||
{
|
||||
trigger_error($user->lang['NO_EVENT_TITLE'] . adm_back_link($u_action), E_USER_WARNING);
|
||||
}
|
||||
|
||||
if (!$start_time || $start_time == 0)
|
||||
{
|
||||
trigger_error($user->lang['NO_EVENT_START'] . adm_back_link($u_action), E_USER_WARNING);
|
||||
}
|
||||
|
||||
// overwrite already existing events and make sure we don't try to save an event outside of the normal array size of $events
|
||||
if (isset($link_id) && $link_id < sizeof($events))
|
||||
{
|
||||
$message = $user->lang['EVENT_UPDATED'];
|
||||
|
||||
$events[$link_id] = array(
|
||||
'title' => $event_title,
|
||||
'desc' => $event_desc,
|
||||
'start_time' => $start_time,
|
||||
'end_time' => $end_time,
|
||||
'all_day' => $event_all_day,
|
||||
'permission' => $event_permission,
|
||||
'url' => htmlspecialchars_decode($event_url),
|
||||
);
|
||||
|
||||
add_log('admin', 'LOG_PORTAL_EVENT_UPDATED', $event_title);
|
||||
}
|
||||
else
|
||||
{
|
||||
$message = $user->lang['EVENT_ADDED'];
|
||||
|
||||
$events[] = array(
|
||||
'title' => $event_title,
|
||||
'desc' => $event_desc,
|
||||
'start_time' => $start_time,
|
||||
'end_time' => $end_time,
|
||||
'all_day' => $event_all_day,
|
||||
'permission' => $event_permission,
|
||||
'url' => $event_url, // optional
|
||||
);
|
||||
add_log('admin', 'LOG_PORTAL_EVENT_ADDED', $event_title);
|
||||
}
|
||||
|
||||
// we sort the $events array by the start time
|
||||
foreach($events as $key => $cur_event)
|
||||
{
|
||||
$time_ary[$key] = $cur_event['start_time'];
|
||||
}
|
||||
array_multisort($time_ary, SORT_NUMERIC, $events);
|
||||
$board3_events_array = serialize($events);
|
||||
set_portal_config('board3_calendar_events_' . $module_id, $board3_events_array);
|
||||
|
||||
trigger_error($message . adm_back_link($u_action));
|
||||
|
||||
break;
|
||||
|
||||
// Delete link
|
||||
case 'delete':
|
||||
|
||||
if (!isset($link_id) && $link_id >= sizeof($events))
|
||||
{
|
||||
trigger_error($user->lang['NO_EVENT'] . adm_back_link($u_action), E_USER_WARNING);
|
||||
}
|
||||
|
||||
if (confirm_box(true))
|
||||
{
|
||||
$cur_event_title = $events[$link_id]['title'];
|
||||
// delete the selected link and reset the array numbering afterwards
|
||||
array_splice($events, $link_id, 1);
|
||||
$events = array_merge($events);
|
||||
|
||||
$board3_events_array = serialize($events);
|
||||
set_portal_config('board3_calendar_events_' . $module_id, $board3_events_array);
|
||||
|
||||
add_log('admin', 'LOG_PORTAL_EVENT_REMOVED', $cur_event_title);
|
||||
}
|
||||
else
|
||||
{
|
||||
confirm_box(false, $user->lang['CONFIRM_OPERATION'], build_hidden_fields(array(
|
||||
'link_id' => $link_id,
|
||||
'action' => 'delete',
|
||||
)));
|
||||
}
|
||||
|
||||
break;
|
||||
|
||||
// Edit or add menu item
|
||||
case 'edit':
|
||||
case 'add':
|
||||
$event_all_day = (isset($events[$link_id]['all_day']) && $events[$link_id]['all_day'] == true) ? true : false;
|
||||
|
||||
$template->assign_vars(array(
|
||||
'EVENT_TITLE' => (isset($events[$link_id]['title']) && $action != 'add') ? $events[$link_id]['title'] : '',
|
||||
'EVENT_DESC' => (isset($events[$link_id]['desc']) && $action != 'add') ? $events[$link_id]['desc'] : '',
|
||||
'EVENT_START_DAY' => ($action != 'add') ? $user->format_date($events[$link_id]['start_time'], 'd-m-Y') : '',
|
||||
'EVENT_START_TIME' => ($action != 'add') ? $user->format_date($events[$link_id]['start_time'], 'G:i') : '',
|
||||
'EVENT_END_DAY' => ($action != 'add' && !$event_all_day) ? $user->format_date($events[$link_id]['end_time'], 'd-m-Y') : '',
|
||||
'EVENT_END_TIME' => ($action != 'add' && !$event_all_day) ? $user->format_date($events[$link_id]['end_time'], 'G:i') : '',
|
||||
'EVENT_ALL_DAY' => (isset($events[$link_id]['all_day']) && $events[$link_id]['all_day'] == true) ? true : false,
|
||||
'EVENT_URL' => (isset($events[$link_id]['url']) && $action != 'add') ? $events[$link_id]['url'] : '',
|
||||
|
||||
//'U_BACK' => $u_action,
|
||||
'U_ACTION' => $u_action . '&id=' . $link_id,
|
||||
|
||||
'S_EDIT' => true,
|
||||
));
|
||||
|
||||
$groups_ary = (isset($events[$link_id]['permission'])) ? explode(',', $events[$link_id]['permission']) : array();
|
||||
|
||||
// get group info from database and assign the block vars
|
||||
$sql = 'SELECT group_id, group_name
|
||||
FROM ' . GROUPS_TABLE . '
|
||||
ORDER BY group_id ASC';
|
||||
$result = $db->sql_query($sql);
|
||||
while($row = $db->sql_fetchrow($result))
|
||||
{
|
||||
$template->assign_block_vars('permission_setting_calendar', array(
|
||||
'SELECTED' => (in_array($row['group_id'], $groups_ary)) ? true : false,
|
||||
'GROUP_NAME' => (isset($user->lang['G_' . $row['group_name']])) ? $user->lang['G_' . $row['group_name']] : $row['group_name'],
|
||||
'GROUP_ID' => $row['group_id'],
|
||||
));
|
||||
}
|
||||
$db->sql_freeresult($result);
|
||||
|
||||
return;
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
for ($i = 0; $i < sizeof($events); $i++)
|
||||
{
|
||||
$event_all_day = ($events[$i]['all_day'] == true) ? true : false;
|
||||
$start_time_format = (!intval($user->format_date($events[$i]['start_time'], 'H')) && !intval($user->format_date($events[$i]['start_time'], 'i'))) ? 'j. M Y' : 'j. M Y, H:i';
|
||||
$end_time_format = (!intval($user->format_date($events[$i]['end_time'], 'H')) && !intval($user->format_date($events[$i]['end_time'], 'i'))) ? 'j. M Y' : 'j. M Y, H:i';
|
||||
|
||||
$template->assign_block_vars('events', array(
|
||||
'EVENT_TITLE' => ($action != 'add') ? ((isset($user->lang[$events[$i]['title']])) ? $user->lang[$events[$i]['title']] : $events[$i]['title']) : '',
|
||||
'EVENT_DESC' => ($action != 'add') ? $events[$i]['desc'] : '',
|
||||
'EVENT_START' => ($action != 'add') ? $user->format_date($events[$i]['start_time'], $start_time_format) : '',
|
||||
'EVENT_END' => ($action != 'add' && !$event_all_day) ? $user->format_date($events[$i]['end_time'], $end_time_format) : '',
|
||||
'EVENT_URL' => ($action != 'add' && isset($events[$i]['url']) && !empty($events[$i]['url'])) ? $this->validate_url($events[$i]['url']) : '',
|
||||
'EVENT_URL_RAW' => ($action != 'add' && isset($events[$i]['url']) && !empty($events[$i]['url'])) ? $events[$i]['url'] : '',
|
||||
'U_EDIT' => $u_action . '&action=edit&id=' . $i,
|
||||
'U_DELETE' => $u_action . '&action=delete&id=' . $i,
|
||||
'EVENT_ALL_DAY' => $event_all_day,
|
||||
));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public function update_events($key, $module_id)
|
||||
{
|
||||
$this->manage_events('', $key, $module_id);
|
||||
}
|
||||
|
||||
private $dateYYY; // year in numeric format (YYYY)
|
||||
private $dateMM; // month in numeric format (MM)
|
||||
private $dateDD; // day in numeric format (DD)
|
||||
private $ext_dateMM; // extended month (e.g. February)
|
||||
private $daysMonth; // count of days in month
|
||||
private $stamp; // timestamp
|
||||
private $day; // return array s.a.
|
||||
|
||||
/**
|
||||
* convert date->timestamp
|
||||
**/
|
||||
private function makeTimestamp($date)
|
||||
{
|
||||
$this->stamp = strtotime($date);
|
||||
return ($this->stamp);
|
||||
}
|
||||
|
||||
/**
|
||||
* get date listed in array
|
||||
**/
|
||||
private function getMonth($callDate)
|
||||
{
|
||||
global $user;
|
||||
|
||||
$this->makeTimestamp($callDate);
|
||||
// last or first day of some months need to be treated in a special way
|
||||
if (!empty($this->mini_cal_month))
|
||||
{
|
||||
$time = $user->create_datetime();
|
||||
$now = phpbb_gmgetdate($time->getTimestamp() + $time->getOffset());
|
||||
$today_timestamp = $now[0];
|
||||
$cur_month = date("n", $today_timestamp);
|
||||
$correct_month = $cur_month + $this->mini_cal_month;
|
||||
|
||||
// move back or forth the correct number of years
|
||||
while ($correct_month < 1 || $correct_month > self::MONTHS_PER_YEAR)
|
||||
{
|
||||
if ($correct_month < 1)
|
||||
{
|
||||
$correct_month = $correct_month + self::MONTHS_PER_YEAR;
|
||||
}
|
||||
else
|
||||
{
|
||||
$correct_month = $correct_month - self::MONTHS_PER_YEAR;
|
||||
}
|
||||
}
|
||||
|
||||
// fix incorrect months
|
||||
while (date("n", $this->stamp) != $correct_month)
|
||||
{
|
||||
if (date("n", $this->stamp) > $correct_month)
|
||||
{
|
||||
$this->stamp = $this->stamp - self::TIME_DAY; // go back one day
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->stamp = $this->stamp + self::TIME_DAY; // move forward one day
|
||||
}
|
||||
}
|
||||
}
|
||||
$this->dateYYYY = date("Y", $this->stamp);
|
||||
$this->dateMM = date("n", $this->stamp);
|
||||
$this->ext_dateMM = date("F", $this->stamp);
|
||||
$this->dateDD = date("d", $this->stamp);
|
||||
$this->daysMonth = date("t", $this->stamp);
|
||||
|
||||
for ($i = 1; $i < $this->daysMonth + 1; $i++)
|
||||
{
|
||||
$this->makeTimestamp("$i {$this->ext_dateMM} {$this->dateYYYY}");
|
||||
$this->day[] = array(
|
||||
'0' => "$i",
|
||||
'1' => $this->dateMM,
|
||||
'2' => $this->dateYYYY,
|
||||
'3' => date('w', $this->stamp)
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
// Unserialize links array
|
||||
private function utf_unserialize($serial_str)
|
||||
{
|
||||
$out = preg_replace('!s:(\d+):"(.*?)";!se', "'s:'.strlen('$2').':\"$2\";'", $serial_str );
|
||||
return unserialize($out);
|
||||
}
|
||||
|
||||
/**
|
||||
* validate URLs and execute apppend_sid if necessary
|
||||
*/
|
||||
private function validate_url($url)
|
||||
{
|
||||
global $config;
|
||||
|
||||
$url = str_replace("\r\n", "\n", str_replace('\"', '"', trim($url)));
|
||||
$url = str_replace(' ', '%20', $url);
|
||||
$url = str_replace('&', '&', $url);
|
||||
|
||||
// if there is no scheme, then add http schema
|
||||
if (!preg_match('#^[a-z][a-z\d+\-.]*:/{2}#i', $url))
|
||||
{
|
||||
$url = 'http://' . $url;
|
||||
}
|
||||
|
||||
// Is this a link to somewhere inside this board? If so then run reapply_sid()
|
||||
if (strpos($url, generate_board_url()) !== false)
|
||||
{
|
||||
$url = reapply_sid($url);
|
||||
}
|
||||
|
||||
return $url;
|
||||
}
|
||||
}
|
||||
@@ -1,75 +0,0 @@
|
||||
<?php
|
||||
/**
|
||||
*
|
||||
* @package Board3 Portal v2 - Clock
|
||||
* @copyright (c) Board3 Group ( www.board3.de )
|
||||
* @license http://opensource.org/licenses/gpl-license.php GNU Public License
|
||||
*
|
||||
*/
|
||||
|
||||
/**
|
||||
* @ignore
|
||||
*/
|
||||
if (!defined('IN_PHPBB'))
|
||||
{
|
||||
exit;
|
||||
}
|
||||
|
||||
/**
|
||||
* @package Clock
|
||||
*/
|
||||
class portal_clock_module
|
||||
{
|
||||
/**
|
||||
* Allowed columns: Just sum up your options (Exp: left + right = 10)
|
||||
* top 1
|
||||
* left 2
|
||||
* center 4
|
||||
* right 8
|
||||
* bottom 16
|
||||
*/
|
||||
public $columns = 10;
|
||||
|
||||
/**
|
||||
* Default modulename
|
||||
*/
|
||||
public $name = 'CLOCK';
|
||||
|
||||
/**
|
||||
* Default module-image:
|
||||
* file must be in "{T_THEME_PATH}/images/portal/"
|
||||
*/
|
||||
public $image_src = 'portal_clock.png';
|
||||
|
||||
/**
|
||||
* module-language file
|
||||
* file must be in "language/{$user->lang}/mods/portal/"
|
||||
*/
|
||||
public $language = 'portal_clock_module';
|
||||
|
||||
public function get_template_side($module_id)
|
||||
{
|
||||
return 'clock_side.html';
|
||||
}
|
||||
|
||||
public function get_template_acp($module_id)
|
||||
{
|
||||
return array(
|
||||
'title' => 'ACP_PORTAL_CLOCK_SETTINGS',
|
||||
'vars' => array(),
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* API functions
|
||||
*/
|
||||
public function install($module_id)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
public function uninstall($module_id)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
}
|
||||
@@ -1,347 +0,0 @@
|
||||
<?php
|
||||
/**
|
||||
*
|
||||
* @package Board3 Portal v2 - Custom
|
||||
* @copyright (c) Board3 Group ( www.board3.de )
|
||||
* @license http://opensource.org/licenses/gpl-license.php GNU Public License
|
||||
*
|
||||
*/
|
||||
|
||||
/**
|
||||
* @ignore
|
||||
*/
|
||||
if (!defined('IN_PHPBB'))
|
||||
{
|
||||
exit;
|
||||
}
|
||||
|
||||
/**
|
||||
* @package Custom
|
||||
*/
|
||||
class portal_custom_module
|
||||
{
|
||||
/**
|
||||
* Allowed columns: Just sum up your options (Exp: left + right = 10)
|
||||
* top 1
|
||||
* left 2
|
||||
* center 4
|
||||
* right 8
|
||||
* bottom 16
|
||||
*/
|
||||
public $columns = 31;
|
||||
|
||||
/**
|
||||
* Default modulename
|
||||
*/
|
||||
public $name = 'PORTAL_CUSTOM';
|
||||
|
||||
/**
|
||||
* Default module-image:
|
||||
* file must be in "{T_THEME_PATH}/images/portal/"
|
||||
*/
|
||||
public $image_src = 'portal_custom.png';
|
||||
|
||||
/**
|
||||
* module-language file
|
||||
* file must be in "language/{$user->lang}/mods/portal/"
|
||||
*/
|
||||
public $language = 'portal_custom_module';
|
||||
|
||||
/**
|
||||
* custom acp template
|
||||
* file must be in "adm/style/portal/"
|
||||
*/
|
||||
public $custom_acp_tpl = 'acp_portal_custom';
|
||||
|
||||
public function get_template_center($module_id)
|
||||
{
|
||||
return $this->parse_template($module_id);
|
||||
}
|
||||
|
||||
public function get_template_side($module_id)
|
||||
{
|
||||
return $this->parse_template($module_id, 'side');
|
||||
}
|
||||
|
||||
public function get_template_acp($module_id)
|
||||
{
|
||||
return array(
|
||||
'title' => 'PORTAL_CUSTOM',
|
||||
'vars' => array(
|
||||
'legend1' => 'PORTAL_CUSTOM',
|
||||
'board3_custom_' . $module_id . '_code' => array('lang' => 'PORTAL_CUSTOM', 'validate' => 'string', 'type' => 'custom', 'method' => 'manage_custom', 'submit' => 'update_custom', 'explain' => true),
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* API functions
|
||||
*/
|
||||
public function install($module_id)
|
||||
{
|
||||
set_portal_config('board3_custom_' . $module_id . '_code', '');
|
||||
set_config('board3_custom_' . $module_id . '_code', '');
|
||||
set_config('board3_custom_' . $module_id . '_bbcode', 1);
|
||||
set_config('board3_custom_' . $module_id . '_title', '');
|
||||
set_config('board3_custom_' . $module_id . '_image_src', '');
|
||||
set_config('board3_custom_' . $module_id . '_uid', '');
|
||||
set_config('board3_custom_' . $module_id . '_bitfield', '');
|
||||
set_config('board3_custom_' . $module_id . '_permission', '');
|
||||
return true;
|
||||
}
|
||||
|
||||
public function uninstall($module_id)
|
||||
{
|
||||
global $db;
|
||||
|
||||
$del_config = array(
|
||||
'board3_custom_' . $module_id . '_code',
|
||||
);
|
||||
$sql = 'DELETE FROM ' . PORTAL_CONFIG_TABLE . '
|
||||
WHERE ' . $db->sql_in_set('config_name', $del_config);
|
||||
|
||||
$check = $db->sql_query($sql);
|
||||
|
||||
$del_config = array(
|
||||
'board3_custom_' . $module_id . '_bbcode',
|
||||
'board3_custom_' . $module_id . '_title',
|
||||
'board3_custom_' . $module_id . '_image_src',
|
||||
'board3_custom_' . $module_id . '_uid',
|
||||
'board3_custom_' . $module_id . '_bitfield',
|
||||
'board3_custom_' . $module_id . '_permission',
|
||||
);
|
||||
$sql = 'DELETE FROM ' . CONFIG_TABLE . '
|
||||
WHERE ' . $db->sql_in_set('config_name', $del_config);
|
||||
return ((!$check) ? $check : $db->sql_query($sql)); // if something went wrong, make sure we are aware of the first query
|
||||
}
|
||||
|
||||
public function manage_custom($value, $key, $module_id)
|
||||
{
|
||||
global $db, $portal_config, $config, $template, $user, $phpEx, $phpbb_admin_path, $phpbb_root_path;
|
||||
|
||||
$action = (isset($_POST['reset'])) ? 'reset' : '';
|
||||
$action = (isset($_POST['submit'])) ? 'save' : $action;
|
||||
$action = (isset($_POST['preview'])) ? 'preview' : $action;
|
||||
|
||||
$portal_config = obtain_portal_config();
|
||||
|
||||
$u_action = append_sid($phpbb_admin_path . 'index.' . $phpEx, 'i=portal&mode=config&module_id=' . $module_id);
|
||||
|
||||
switch($action)
|
||||
{
|
||||
// Save changes
|
||||
case 'save':
|
||||
if (!check_form_key('acp_portal'))
|
||||
{
|
||||
trigger_error($user->lang['FORM_INVALID']. adm_back_link($u_action), E_USER_WARNING);
|
||||
}
|
||||
|
||||
$custom_code = utf8_normalize_nfc(request_var('custom_code', '', true));
|
||||
$custom_bbcode = request_var('custom_use_bbcode', 1); // default to BBCode
|
||||
$custom_permission = request_var('permission-setting', array(0 => ''));
|
||||
$custom_title = utf8_normalize_nfc(request_var('module_name', '', true));
|
||||
$custom_image_src = utf8_normalize_nfc(request_var('module_image', ''));
|
||||
$groups_ary = array();
|
||||
$uid = $bitfield = $flags = '';
|
||||
$options = 7;
|
||||
if($custom_bbcode)
|
||||
{
|
||||
generate_text_for_storage($custom_code, $uid, $bitfield, $flags, true, true, true);
|
||||
}
|
||||
|
||||
// first check for obvious errors, we don't want to waste server resources
|
||||
if(empty($custom_code))
|
||||
{
|
||||
trigger_error($user->lang['ACP_PORTAL_CUSTOM_CODE_SHORT']. adm_back_link($u_action), E_USER_WARNING);
|
||||
}
|
||||
|
||||
// get groups and check if the selected groups actually exist
|
||||
$sql = 'SELECT group_id
|
||||
FROM ' . GROUPS_TABLE . '
|
||||
ORDER BY group_id ASC';
|
||||
$result = $db->sql_query($sql);
|
||||
while($row = $db->sql_fetchrow($result))
|
||||
{
|
||||
$groups_ary[] = $row['group_id'];
|
||||
}
|
||||
$db->sql_freeresult($result);
|
||||
|
||||
$custom_permission = array_intersect($custom_permission, $groups_ary);
|
||||
$custom_permission = implode(',', $custom_permission);
|
||||
|
||||
if (isset($user->lang[$custom_title]))
|
||||
{
|
||||
$log_title = $user->lang[$custom_title];
|
||||
}
|
||||
else
|
||||
{
|
||||
$log_title = $custom_title;
|
||||
}
|
||||
|
||||
add_log('admin', 'LOG_PORTAL_CONFIG', $user->lang['PORTAL_CUSTOM'] . ': ' . $log_title);
|
||||
|
||||
// set_portal_config will take care of escaping the welcome message
|
||||
set_portal_config('board3_custom_' . $module_id . '_code', $custom_code);
|
||||
set_config('board3_custom_' . $module_id . '_bbcode', $custom_bbcode);
|
||||
set_config('board3_custom_' . $module_id . '_title', $custom_title);
|
||||
set_config('board3_custom_' . $module_id . '_image_src', $custom_image_src);
|
||||
set_config('board3_custom_' . $module_id . '_uid', $uid);
|
||||
set_config('board3_custom_' . $module_id . '_bitfield', $bitfield);
|
||||
set_config('board3_custom_' . $module_id . '_permission', $custom_permission);
|
||||
|
||||
//trigger_error($user->lang['CONFIG_UPDATED'] . adm_back_link(($module_id) ? append_sid("{$phpbb_admin_path}index.$phpEx", 'i=portal&mode=modules') : $u_action));
|
||||
|
||||
break;
|
||||
|
||||
case 'preview':
|
||||
$custom_code = $text = utf8_normalize_nfc(request_var('custom_code', '', true));
|
||||
$custom_bbcode = request_var('custom_use_bbcode', 1); // default to BBCode
|
||||
$custom_permission = request_var('permission-setting', array(0 => ''));
|
||||
$custom_title = utf8_normalize_nfc(request_var('module_name', ''));
|
||||
$custom_image_src = utf8_normalize_nfc(request_var('module_image', ''));
|
||||
$groups_ary = array();
|
||||
|
||||
// first check for obvious errors, we don't want to waste server resources
|
||||
if(empty($custom_code))
|
||||
{
|
||||
trigger_error($user->lang['ACP_PORTAL_CUSTOM_CODE_SHORT']. adm_back_link($u_action), E_USER_WARNING);
|
||||
}
|
||||
|
||||
if (!class_exists('parse_message'))
|
||||
{
|
||||
include($phpbb_root_path . 'includes/message_parser.' . $phpEx);
|
||||
}
|
||||
if($custom_bbcode)
|
||||
{
|
||||
$bbcode_options = OPTION_FLAG_BBCODE + OPTION_FLAG_SMILIES + OPTION_FLAG_LINKS;
|
||||
$uid = (isset($config['board3_custom_' . $module_id . '_uid'])) ? $config['board3_custom_' . $module_id . '_uid'] : '';
|
||||
$bitfield = (isset($config['board3_custom_' . $module_id . '_bitfield'])) ? $config['board3_custom_' . $module_id . '_bitfield'] : '';
|
||||
$options = OPTION_FLAG_BBCODE + OPTION_FLAG_SMILIES + OPTION_FLAG_LINKS;
|
||||
generate_text_for_storage($text, $uid, $bitfield, $options, true, true, true);
|
||||
|
||||
$text = generate_text_for_display($text, $uid, $bitfield, $options);
|
||||
}
|
||||
else
|
||||
{
|
||||
$text = htmlspecialchars_decode($text, ENT_QUOTES);
|
||||
}
|
||||
|
||||
$template->assign_vars(array(
|
||||
'PREVIEW_TEXT' => $text,
|
||||
'S_PREVIEW' => true,
|
||||
));
|
||||
|
||||
// get groups and check if the selected groups actually exist
|
||||
$sql = 'SELECT group_id
|
||||
FROM ' . GROUPS_TABLE . '
|
||||
ORDER BY group_id ASC';
|
||||
$result = $db->sql_query($sql);
|
||||
while($row = $db->sql_fetchrow($result))
|
||||
{
|
||||
$groups_ary[] = $row['group_id'];
|
||||
}
|
||||
$db->sql_freeresult($result);
|
||||
|
||||
$temp_permissions = array_intersect($custom_permission, $groups_ary);
|
||||
|
||||
// Edit or add menu item
|
||||
case 'reset':
|
||||
default:
|
||||
if(!isset($custom_code))
|
||||
{
|
||||
$custom_code = generate_text_for_edit($portal_config['board3_custom_' . $module_id . '_code'], $config['board3_custom_' . $module_id . '_uid'], '');
|
||||
}
|
||||
|
||||
$template->assign_vars(array(
|
||||
'CUSTOM_CODE' => (is_array($custom_code)) ? $custom_code['text'] : $custom_code,
|
||||
'CUSTOM_USE_BBCODE' => (isset($custom_bbcode)) ? $custom_bbcode : (($config['board3_custom_' . $module_id . '_bbcode'] != '') ? $config['board3_custom_' . $module_id . '_bbcode'] : true), // BBCodes are selected by default
|
||||
//'U_BACK' => $u_action,
|
||||
'U_ACTION' => $u_action,
|
||||
'S_EDIT' => true,
|
||||
'S_LINKS_ALLOWED' => true,
|
||||
'S_BBCODE_IMG' => true,
|
||||
'S_BBCODE_FLASH' => true,
|
||||
'S_BBCODE_QUOTE' => true,
|
||||
'S_BBCODE_ALLOWED' => true,
|
||||
'MAX_FONT_SIZE' => (int) $config['max_post_font_size'],
|
||||
));
|
||||
|
||||
$groups_ary = (isset($temp_permissions)) ? $temp_permissions : ((isset($config['board3_custom_' . $module_id . '_permission'])) ? explode(',', $config['board3_custom_' . $module_id . '_permission']) : array());
|
||||
|
||||
// get group info from database and assign the block vars
|
||||
$sql = 'SELECT group_id, group_name
|
||||
FROM ' . GROUPS_TABLE . '
|
||||
ORDER BY group_id ASC';
|
||||
$result = $db->sql_query($sql);
|
||||
while($row = $db->sql_fetchrow($result))
|
||||
{
|
||||
$template->assign_block_vars('permission_setting', array(
|
||||
'SELECTED' => (in_array($row['group_id'], $groups_ary)) ? true : false,
|
||||
'GROUP_NAME' => (isset($user->lang['G_' . $row['group_name']])) ? $user->lang['G_' . $row['group_name']] : $row['group_name'],
|
||||
'GROUP_ID' => $row['group_id'],
|
||||
));
|
||||
}
|
||||
$db->sql_freeresult($result);
|
||||
|
||||
if(!function_exists('display_forums'))
|
||||
{
|
||||
include($phpbb_root_path . 'includes/functions_display.' . $phpEx);
|
||||
}
|
||||
|
||||
// Build custom bbcodes array
|
||||
display_custom_bbcodes();
|
||||
$user->add_lang('posting');
|
||||
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
public function update_custom($key, $module_id)
|
||||
{
|
||||
$this->manage_custom('', $key, $module_id);
|
||||
}
|
||||
|
||||
/**
|
||||
* Parse template for custom blocks
|
||||
*
|
||||
* @param int $module_id Module ID of current module
|
||||
* @param string $type Type of module (center or side), default to
|
||||
* center to not show module image unless wanted
|
||||
* @return array An array containing the custom module data
|
||||
*/
|
||||
protected function parse_template($module_id, $type = 'center')
|
||||
{
|
||||
global $config, $template, $portal_config, $user;
|
||||
|
||||
/*
|
||||
* Run generate_text_for_display if the user uses BBCode for designing his custom block
|
||||
* HTML won't be parsed if the user chooses to use BBCodes in the ACP
|
||||
* If BBCodes are turned off, the custom Block code will be directly assigned and HTML will be parsed
|
||||
*/
|
||||
if ($config['board3_custom_' . $module_id . '_bbcode'])
|
||||
{
|
||||
// Generate text for display and assign template vars
|
||||
$uid = $config['board3_custom_' . $module_id . '_uid'];
|
||||
$bitfield = $config['board3_custom_' . $module_id . '_bitfield'];
|
||||
$bbcode_options = OPTION_FLAG_BBCODE + OPTION_FLAG_SMILIES + OPTION_FLAG_LINKS;
|
||||
$assign_code = generate_text_for_display($portal_config['board3_custom_' . $module_id . '_code'], $uid, $bitfield, $bbcode_options);
|
||||
}
|
||||
else
|
||||
{
|
||||
$assign_code = htmlspecialchars_decode($portal_config['board3_custom_' . $module_id . '_code'], ENT_QUOTES);
|
||||
}
|
||||
|
||||
$title = (!empty($config['board3_custom_' . $module_id . '_title'])) ? ((isset($user->lang[$config['board3_custom_' . $module_id . '_title']])) ? $user->lang[$config['board3_custom_' . $module_id . '_title']] : $config['board3_custom_' . $module_id . '_title']) : $user->lang[$this->name];
|
||||
|
||||
if(!empty($assign_code))
|
||||
{
|
||||
return array(
|
||||
'template' => 'custom_' . $type . '.html',
|
||||
'title' => $title,
|
||||
'code' => $assign_code,
|
||||
// no image for center blocks
|
||||
'image_src' => ($type === 'center') ? '' : ((!empty($config['board3_custom_' . $module_id . '_image_src'])) ? $config['board3_custom_' . $module_id . '_image_src'] : $this->image_src),
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,117 +0,0 @@
|
||||
<?php
|
||||
/**
|
||||
*
|
||||
* @package Board3 Portal v2 - Default
|
||||
* @copyright (c) Board3 Group ( www.board3.de )
|
||||
* @license http://opensource.org/licenses/gpl-license.php GNU Public License
|
||||
*
|
||||
*/
|
||||
|
||||
/**
|
||||
* @ignore
|
||||
*/
|
||||
if (!defined('IN_PHPBB'))
|
||||
{
|
||||
exit;
|
||||
}
|
||||
|
||||
/**
|
||||
* @package Modulname
|
||||
*/
|
||||
class portal_modulename_module
|
||||
{
|
||||
/**
|
||||
* Allowed columns: Just sum up your options (Exp: left + right = 10)
|
||||
* top 1
|
||||
* left 2
|
||||
* center 4
|
||||
* right 8
|
||||
* bottom 16
|
||||
*/
|
||||
public $columns = 0;
|
||||
|
||||
/**
|
||||
* Default modulename
|
||||
*/
|
||||
public $name = 'MODULENAME';
|
||||
|
||||
/**
|
||||
* Default module-image:
|
||||
* file must be in "{T_THEME_PATH}/images/portal/"
|
||||
*/
|
||||
public $image_src = 'modulename.png';
|
||||
|
||||
/**
|
||||
* module-language file
|
||||
* file must be in "language/{$user->lang}/mods/portal/"
|
||||
*/
|
||||
public $language = '';
|
||||
|
||||
/**
|
||||
* custom acp template
|
||||
* file must be in "adm/style/portal/"
|
||||
*/
|
||||
public $custom_acp_tpl = '';
|
||||
|
||||
/**
|
||||
* hide module name in ACP configuration page
|
||||
*/
|
||||
public $hide_name = false;
|
||||
|
||||
public function get_template_center($module_id)
|
||||
{
|
||||
global $config, $template;
|
||||
|
||||
$template->assign_vars(array(
|
||||
'EXAMPLE' => $config['board3_configname_' . $module_id],
|
||||
));
|
||||
|
||||
return 'modulename_center.html';
|
||||
}
|
||||
|
||||
public function get_template_side($module_id)
|
||||
{
|
||||
global $config, $template;
|
||||
|
||||
$template->assign_vars(array(
|
||||
'EXAMPLE' => $config['board3_configname2_' . $module_id],
|
||||
));
|
||||
|
||||
return 'modulename_side.html';
|
||||
}
|
||||
|
||||
public function get_template_acp($module_id)
|
||||
{
|
||||
return array(
|
||||
'title' => 'ACP_CONFIG_MODULENAME',
|
||||
'vars' => array(
|
||||
'legend1' => 'ACP_MODULENAME_CONFIGLEGEND',
|
||||
'board3_configname_' . $module_id => array('lang' => 'MODULENAME_CONFIGNAME', 'validate' => 'string', 'type' => 'text:10:200', 'explain' => false),
|
||||
'board3_configname2_' . $module_id => array('lang' => 'MODULENAME_CONFIGNAME2', 'validate' => 'int', 'type' => 'text:3:3', 'explain' => true),
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* API functions
|
||||
*/
|
||||
public function install($module_id)
|
||||
{
|
||||
set_config('board3_configname_' . $module_id, 'Hello World!');
|
||||
set_config('board3_configname2_' . $module_id, 1337);
|
||||
return true;
|
||||
}
|
||||
|
||||
public function uninstall($module_id)
|
||||
{
|
||||
global $db;
|
||||
|
||||
$del_config = array(
|
||||
'board3_configname_' . $module_id,
|
||||
'board3_configname2_' . $module_id,
|
||||
);
|
||||
$sql = 'DELETE FROM ' . CONFIG_TABLE . '
|
||||
WHERE ' . $db->sql_in_set('config_name', $del_config);
|
||||
return $db->sql_query($sql);
|
||||
}
|
||||
}
|
||||
@@ -1,108 +0,0 @@
|
||||
<?php
|
||||
/**
|
||||
*
|
||||
* @package Board3 Portal v2 - Donation
|
||||
* @copyright (c) Board3 Group ( www.board3.de )
|
||||
* @license http://opensource.org/licenses/gpl-license.php GNU Public License
|
||||
*
|
||||
*/
|
||||
|
||||
/**
|
||||
* @ignore
|
||||
*/
|
||||
if (!defined('IN_PHPBB'))
|
||||
{
|
||||
exit;
|
||||
}
|
||||
|
||||
/**
|
||||
* @package Donation
|
||||
*/
|
||||
class portal_donation_module
|
||||
{
|
||||
/**
|
||||
* Allowed columns: Just sum up your options (Exp: left + right = 10)
|
||||
* top 1
|
||||
* left 2
|
||||
* center 4
|
||||
* right 8
|
||||
* bottom 16
|
||||
*/
|
||||
public $columns = 31;
|
||||
|
||||
/**
|
||||
* Default modulename
|
||||
*/
|
||||
public $name = 'DONATION';
|
||||
|
||||
/**
|
||||
* Default module-image:
|
||||
* file must be in "{T_THEME_PATH}/images/portal/"
|
||||
*/
|
||||
public $image_src = 'portal_donation.png';
|
||||
|
||||
/**
|
||||
* module-language file
|
||||
* file must be in "language/{$user->lang}/mods/portal/"
|
||||
*/
|
||||
public $language = 'portal_donation_module';
|
||||
|
||||
public function get_template_center($module_id)
|
||||
{
|
||||
global $config, $template, $user;
|
||||
|
||||
$template->assign_vars(array(
|
||||
'PAY_ACC_CENTER' => $config['board3_pay_acc_' . $module_id],
|
||||
'PAY_CUSTOM_CENTER' => (!empty($config['board3_pay_custom_' . $module_id])) ? $user->data['username_clean'] : false,
|
||||
));
|
||||
|
||||
return 'donation_center.html';
|
||||
}
|
||||
|
||||
public function get_template_side($module_id)
|
||||
{
|
||||
global $config, $template, $user;
|
||||
|
||||
$template->assign_vars(array(
|
||||
'PAY_ACC_SIDE' => $config['board3_pay_acc_' . $module_id],
|
||||
'PAY_CUSTOM_SIDE' => (!empty($config['board3_pay_custom_' . $module_id])) ? $user->data['username_clean'] : false,
|
||||
));
|
||||
|
||||
return 'donation_side.html';
|
||||
}
|
||||
|
||||
public function get_template_acp($module_id)
|
||||
{
|
||||
return array(
|
||||
'title' => 'ACP_PORTAL_PAYPAL_SETTINGS',
|
||||
'vars' => array(
|
||||
'legend1' => 'ACP_PORTAL_PAYPAL_SETTINGS',
|
||||
'board3_pay_acc_' . $module_id => array('lang' => 'PORTAL_PAY_ACC', 'validate' => 'string', 'type' => 'text:25:100', 'explain' => true),
|
||||
'board3_pay_custom_' . $module_id => array('lang' => 'PORTAL_PAY_CUSTOM', 'validate' => 'bool', 'type' => 'radio:yes_no', 'explain' => false),
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* API functions
|
||||
*/
|
||||
public function install($module_id)
|
||||
{
|
||||
set_config('board3_pay_acc_' . $module_id, 'your@paypal.com');
|
||||
set_config('board3_pay_custom_' . $module_id, true);
|
||||
return true;
|
||||
}
|
||||
|
||||
public function uninstall($module_id)
|
||||
{
|
||||
global $db;
|
||||
|
||||
$del_config = array(
|
||||
'board3_pay_acc_' . $module_id,
|
||||
'board3_pay_custom_' . $module_id,
|
||||
);
|
||||
$sql = 'DELETE FROM ' . CONFIG_TABLE . '
|
||||
WHERE ' . $db->sql_in_set('config_name', $del_config);
|
||||
return $db->sql_query($sql);
|
||||
}
|
||||
}
|
||||
@@ -1,94 +0,0 @@
|
||||
<?php
|
||||
/**
|
||||
*
|
||||
* @package Board3 Portal v2 - Forumlist
|
||||
* @copyright (c) Board3 Group ( www.board3.de )
|
||||
* @license http://opensource.org/licenses/gpl-license.php GNU Public License
|
||||
*
|
||||
*/
|
||||
|
||||
/**
|
||||
* @ignore
|
||||
*/
|
||||
if (!defined('IN_PHPBB'))
|
||||
{
|
||||
exit;
|
||||
}
|
||||
|
||||
/**
|
||||
* @package Forumlist
|
||||
*/
|
||||
class portal_forumlist_module
|
||||
{
|
||||
/**
|
||||
* Allowed columns: Just sum up your options (Exp: left + right = 10)
|
||||
* top 1
|
||||
* left 2
|
||||
* center 4
|
||||
* right 8
|
||||
* bottom 16
|
||||
*/
|
||||
public $columns = 21;
|
||||
|
||||
/**
|
||||
* Default modulename
|
||||
*/
|
||||
public $name = 'PORTAL_FORUMLIST';
|
||||
|
||||
/**
|
||||
* Default module-image:
|
||||
* file must be in "{T_THEME_PATH}/images/portal/"
|
||||
*/
|
||||
public $image_src = '';
|
||||
|
||||
/**
|
||||
* module-language file
|
||||
* file must be in "language/{$user->lang}/mods/portal/"
|
||||
*/
|
||||
public $language = 'portal_forumlist_module';
|
||||
|
||||
/**
|
||||
* custom acp template
|
||||
* file must be in "adm/style/portal/"
|
||||
*/
|
||||
public $custom_acp_tpl = '';
|
||||
|
||||
public function get_template_center($module_id)
|
||||
{
|
||||
global $config, $template, $user, $auth, $phpbb_root_path, $phpEx;
|
||||
|
||||
display_forums('', $config['load_moderators'], false);
|
||||
|
||||
$template->assign_vars(array(
|
||||
'FORUM_IMG' => $user->img('forum_read', 'NO_NEW_POSTS'),
|
||||
'FORUM_NEW_IMG' => $user->img('forum_unread', 'NEW_POSTS'),
|
||||
'FORUM_LOCKED_IMG' => $user->img('forum_read_locked', 'NO_NEW_POSTS_LOCKED'),
|
||||
'FORUM_NEW_LOCKED_IMG' => $user->img('forum_unread_locked', 'NO_NEW_POSTS_LOCKED'),
|
||||
'U_MARK_FORUMS' => ($user->data['is_registered'] || $config['load_anon_lastread']) ? append_sid("{$phpbb_root_path}index.$phpEx", 'hash=' . generate_link_hash('global') . '&mark=forums') : '',
|
||||
'U_MCP' => ($auth->acl_get('m_') || $auth->acl_getf_global('m_')) ? append_sid("{$phpbb_root_path}mcp.$phpEx", 'i=main&mode=front', true, $user->session_id) : '',
|
||||
));
|
||||
|
||||
return 'forumlist.html';
|
||||
}
|
||||
|
||||
public function get_template_acp($module_id)
|
||||
{
|
||||
return array(
|
||||
'title' => 'PORTAL_FORUMLIST',
|
||||
'vars' => array(),
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* API functions
|
||||
*/
|
||||
public function install($module_id)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
public function uninstall($module_id)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
}
|
||||
@@ -1,136 +0,0 @@
|
||||
<?php
|
||||
/**
|
||||
*
|
||||
* @package Board3 Portal v2 - Friends
|
||||
* @copyright (c) Board3 Group ( www.board3.de )
|
||||
* @license http://opensource.org/licenses/gpl-license.php GNU Public License
|
||||
*
|
||||
*/
|
||||
|
||||
/**
|
||||
* @ignore
|
||||
*/
|
||||
if (!defined('IN_PHPBB'))
|
||||
{
|
||||
exit;
|
||||
}
|
||||
|
||||
/**
|
||||
* @package Friends
|
||||
*/
|
||||
class portal_friends_module
|
||||
{
|
||||
/**
|
||||
* Allowed columns: Just sum up your options (Exp: left + right = 10)
|
||||
* top 1
|
||||
* left 2
|
||||
* center 4
|
||||
* right 8
|
||||
* bottom 16
|
||||
*/
|
||||
public $columns = 10;
|
||||
|
||||
/**
|
||||
* Default modulename
|
||||
*/
|
||||
public $name = 'FRIENDS';
|
||||
|
||||
/**
|
||||
* Default module-image:
|
||||
* file must be in "{T_THEME_PATH}/images/portal/"
|
||||
*/
|
||||
public $image_src = 'portal_friends.png';
|
||||
|
||||
/**
|
||||
* module-language file
|
||||
* file must be in "language/{$user->lang}/mods/portal/"
|
||||
*/
|
||||
public $language = 'portal_friends_module';
|
||||
|
||||
public function get_template_side($module_id)
|
||||
{
|
||||
global $config, $template, $db, $user, $auth;
|
||||
|
||||
$s_display_friends = false;
|
||||
|
||||
// Output listing of friends online
|
||||
$update_time = $config['load_online_time'] * 60;
|
||||
|
||||
$sql = $db->sql_build_query('SELECT_DISTINCT', array(
|
||||
'SELECT' => 'u.user_id, u.username, u.username_clean, u.user_colour, u.user_allow_viewonline, MAX(s.session_time) as online_time, MIN(s.session_viewonline) AS viewonline',
|
||||
'FROM' => array(
|
||||
USERS_TABLE => 'u',
|
||||
ZEBRA_TABLE => 'z'
|
||||
),
|
||||
|
||||
'LEFT_JOIN' => array(
|
||||
array(
|
||||
'FROM' => array(SESSIONS_TABLE => 's'),
|
||||
'ON' => 's.session_user_id = z.zebra_id'
|
||||
)
|
||||
),
|
||||
|
||||
'WHERE' => 'z.user_id = ' . $user->data['user_id'] . '
|
||||
AND z.friend = 1
|
||||
AND u.user_id = z.zebra_id',
|
||||
'GROUP_BY' => 'z.zebra_id, u.user_id, u.username, u.username_clean, u.user_allow_viewonline, u.user_colour',
|
||||
'ORDER_BY' => 'u.username_clean ASC',
|
||||
));
|
||||
|
||||
$result = $db->sql_query_limit($sql, $config['board3_max_online_friends_' . $module_id]);
|
||||
|
||||
while ($row = $db->sql_fetchrow($result))
|
||||
{
|
||||
$which = (time() - $update_time < $row['online_time'] && ($row['viewonline'] || $auth->acl_get('u_viewonline'))) ? 'online' : 'offline';
|
||||
$s_display_friends = ($row['user_id']) ? true : false;
|
||||
|
||||
$template->assign_block_vars("b3p_friends_{$which}", array(
|
||||
'USER_ID' => $row['user_id'],
|
||||
'U_PROFILE' => get_username_string('profile', $row['user_id'], $row['username'], $row['user_colour']),
|
||||
'USER_COLOUR' => get_username_string('colour', $row['user_id'], $row['username'], $row['user_colour']),
|
||||
'USERNAME' => get_username_string('username', $row['user_id'], $row['username'], $row['user_colour']),
|
||||
'USERNAME_FULL' => get_username_string('full', $row['user_id'], $row['username'], $row['user_colour']))
|
||||
);
|
||||
}
|
||||
$db->sql_freeresult($result);
|
||||
|
||||
// Assign specific vars
|
||||
$template->assign_vars(array(
|
||||
'S_DISPLAY_FRIENDS' => $s_display_friends,
|
||||
));
|
||||
|
||||
return 'friends_side.html';
|
||||
}
|
||||
|
||||
public function get_template_acp($module_id)
|
||||
{
|
||||
return array(
|
||||
'title' => 'ACP_PORTAL_FRIENDS_SETTINGS',
|
||||
'vars' => array(
|
||||
'legend1' => 'ACP_PORTAL_FRIENDS_SETTINGS',
|
||||
'board3_max_online_friends_' . $module_id => array('lang' => 'PORTAL_MAX_ONLINE_FRIENDS', 'validate' => 'int', 'type' => 'text:3:3', 'explain' => true),
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* API functions
|
||||
*/
|
||||
public function install($module_id)
|
||||
{
|
||||
set_config('board3_max_online_friends_' . $module_id, 8);
|
||||
return true;
|
||||
}
|
||||
|
||||
public function uninstall($module_id)
|
||||
{
|
||||
global $db;
|
||||
|
||||
$del_config = array(
|
||||
'board3_max_online_friends_' . $module_id,
|
||||
);
|
||||
$sql = 'DELETE FROM ' . CONFIG_TABLE . '
|
||||
WHERE ' . $db->sql_in_set('config_name', $del_config);
|
||||
return $db->sql_query($sql);
|
||||
}
|
||||
}
|
||||
@@ -1,117 +0,0 @@
|
||||
<?php
|
||||
/**
|
||||
*
|
||||
* @package Board3 Portal v2 - Latest Bots
|
||||
* @copyright (c) Board3 Group ( www.board3.de )
|
||||
* @license http://opensource.org/licenses/gpl-license.php GNU Public License
|
||||
*
|
||||
*/
|
||||
|
||||
/**
|
||||
* @ignore
|
||||
*/
|
||||
if (!defined('IN_PHPBB'))
|
||||
{
|
||||
exit;
|
||||
}
|
||||
|
||||
/**
|
||||
* @package Latest Bots
|
||||
*/
|
||||
class portal_latest_bots_module
|
||||
{
|
||||
/**
|
||||
* Allowed columns: Just sum up your options (Exp: left + right = 10)
|
||||
* top 1
|
||||
* left 2
|
||||
* center 4
|
||||
* right 8
|
||||
* bottom 16
|
||||
*/
|
||||
public $columns = 10;
|
||||
|
||||
/**
|
||||
* Default modulename
|
||||
*/
|
||||
public $name = 'LATEST_BOTS';
|
||||
|
||||
/**
|
||||
* Default module-image:
|
||||
* file must be in "{T_THEME_PATH}/images/portal/"
|
||||
*/
|
||||
public $image_src = 'portal_bots.png';
|
||||
|
||||
/**
|
||||
* module-language file
|
||||
* file must be in "language/{$user->lang}/mods/portal/"
|
||||
*/
|
||||
public $language = 'portal_latest_bots_module';
|
||||
|
||||
/**
|
||||
* hide module name in ACP configuration page
|
||||
*/
|
||||
public $hide_name = false;
|
||||
|
||||
|
||||
public function get_template_side($module_id)
|
||||
{
|
||||
global $config, $template, $db, $user;
|
||||
|
||||
// Last x visited bots
|
||||
$sql = 'SELECT username, user_colour, user_lastvisit
|
||||
FROM ' . USERS_TABLE . '
|
||||
WHERE user_type = ' . USER_IGNORE . '
|
||||
AND user_lastvisit > 0
|
||||
ORDER BY user_lastvisit DESC';
|
||||
$result = $db->sql_query_limit($sql, $config['board3_last_visited_bots_number_' . $module_id]);
|
||||
|
||||
$show_module = false;
|
||||
|
||||
while ($row = $db->sql_fetchrow($result))
|
||||
{
|
||||
$template->assign_block_vars('last_visited_bots', array(
|
||||
'BOT_NAME' => get_username_string('full', '', $row['username'], $row['user_colour']),
|
||||
'LAST_VISIT_DATE' => $user->format_date($row['user_lastvisit']),
|
||||
));
|
||||
$show_module = true;
|
||||
}
|
||||
$db->sql_freeresult($result);
|
||||
|
||||
if($show_module)
|
||||
{
|
||||
return 'latest_bots_side.html';
|
||||
}
|
||||
}
|
||||
|
||||
public function get_template_acp($module_id)
|
||||
{
|
||||
return array(
|
||||
'title' => 'ACP_PORTAL_BOTS_SETTINGS',
|
||||
'vars' => array(
|
||||
'legend1' => 'ACP_PORTAL_BOTS_SETTINGS',
|
||||
'board3_last_visited_bots_number_' . $module_id => array('lang' => 'PORTAL_LAST_VISITED_BOTS_NUMBER' , 'validate' => 'int', 'type' => 'text:3:3', 'explain' => true),
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* API functions
|
||||
*/
|
||||
public function install($module_id)
|
||||
{
|
||||
set_config('board3_last_visited_bots_number_' . $module_id, 1);
|
||||
return true;
|
||||
}
|
||||
|
||||
public function uninstall($module_id)
|
||||
{
|
||||
global $db;
|
||||
|
||||
$del_config = array(
|
||||
'board3_last_visited_bots_number_' . $module_id,
|
||||
);
|
||||
$sql = 'DELETE FROM ' . CONFIG_TABLE . '
|
||||
WHERE ' . $db->sql_in_set('config_name', $del_config);
|
||||
return $db->sql_query($sql);
|
||||
}
|
||||
}
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user