Modifikation "mod_text" (Pimp my Textfeld)
Diese Dokumentation ist urheberrechtlich geschützt. Alle Rechte, auch die der Modifikation, der Übersetzung, des Nachdrucks und der Vervielfältigung, im Ganzen oder in Teilen, bedürfen der vorherigen schriftlichen Genehmigung von Markus Rösel. Dies gilt unabhängig davon, auf welche Art und Weise, für welche Zwecke und mit welchen Mitteln dies geschieht.
Markus Rösel übernimmt weder Garantie für die Fehlerfreiheit und Aktualität dieses Handbuches, noch juristische Verantwortung oder irgendeine Haftung, die aus der Nutzung dieses Handbuches resultiert. Dies gilt auch für Auslassungen, fehlerhafte Angaben und daraus eventuell entstehende Schäden.
Sämtliche auch ohne besondere Kennzeichnung verwendeten Handels-, Waren-, Marken- und Gebrauchsnamen stehen ausschließlich den jeweiligen Inhabern zu. Alle in diesem Handbuch enthaltenen Angaben und Daten dienen ausschließlich Informationszwecken und können ohne vorherige Ankündigung geändert werden. Die in Beispielen verwendeten Namen und Daten sind frei erfunden.
ConPresso ist eine eingetragene Marke der Bartels Schöne GmbH & Co. KG, Münster (Nr. 301 66 567)
24.09.2006
1. Was macht die Modifikation "mod_text"?
Die Modifikation mod_text erweitert die Möglichkeiten des Textfeldes bei der Artikelerfassung.
Zum einen werden das Kurztext- und das große Textfeld um eine Begrenzung der Zeichenzahl erweitert, die gleichzeitig auch die optische Größe der Felder bestimmt.
Außerdem stehen Checkboxen, Radiobuttons (horizontal und vertikal) sowie Selectboxen, bei denen die auswählbaren Optionen frei eingegeben werden können.
NEU: Zur Verbesserung der Artikelerfassung gibt es nun auch die Typen "Beschreibung", "Trennung" und "Artikel speichern".
Die Installation der Modifikation erfordert einige Eingriffe in Original-ConPresso-Dateien.
Daher ist es zwingend erforderlich vor der Installation ein Backup der ConPresso-Dateien durchzuführen, um bei einer Deinstallation der Modifikation den Originalzustand wiederherstellen zu können!
2. Installation
Die Modifikation benötigt keine Installation sondern muß nur als Verzeichnis mod_text ins ConPresso-Verzeichnis kopiert werden.
Darüber hinaus müssen einige der original ConPresso-Dateien bearbeitet werden, da dieModifikation direkt in die Originalfunktionen eingreift
Es liegen für ConPresso 4.0.7, 4.0.8 und 4.0.9 premodded Files bei, also bereits angepasste Dateien, mit denen nur die Originale überschrieben werden müssen, wenn an diesen noch keine sonstigen Änderungen vorgenommen wurden.
Für ConPresso 4.1.x benutzten Sie bitte die Version 4.1b von mod_text.
=== OPEN / ÖFFNEN ===
_admin/manage_placeholder.php (bis 4.0.6) oder _admin/manage_placeholders.php (mit "s" in 4.0.7)
=== FIND / FINDE ===
case 'text':
print('<tr><td>'.___('Short text:').'</td><td>');
print('<input name="placeholder[short]" class="checkbox" type="checkbox" value="1" '.($placeholder['short']=='1' ? 'checked' : '').'>');
print(help('templates-workonarticletemplates.html#templates-workonarticletemplates-editplaceholder-settings-shorttext').'</td></tr>');
break;
=== REPLACE WITH / ERSETZEN DURCH ===
in 4.0.x
case 'text':
include(CPO_BASEDIR.'mod_text/includes/manage_placeholder.inc.php');
break;
in 4.1.x
case 'text':
print('<tr><td>'.__('Description:').'</td><td>');
print('<input name="placeholder[label]" type="text" value="'.htmlspecialchars($placeholder['label']).'" class="inputwidth">'.help('templates-workonarticletemplates.html#templates-workonarticletemplates-editplaceholder-settings-description').'</td></tr>');
include(CPO_BASEDIR.'mod_text/includes/manage_placeholder.inc.php');
break;
=== OPEN / ÖFFNE ===
_include/form_fields.inc.php
=== FIND / FINDE ===
in 4.0.x
case 'text':
// remove key from temporary content array so that only not used content is left
unset($_content[$key]);
// make sure an empty values exist for a key without content.
if (!array_key_exists($key, $content)) {
$content[$key] = array('id'=>'', 'text'=>'');
}
printf('<tr><td class="leftrow">%s:</td><td class="rightrow">',
htmlspecialchars($name));
if (isset($value['label']) && trim($value['label'])!='') {
printf('%s<br /><br />', $value['label']);
}
if (isset($value['short'])) {
printf('<input type="text" name="content[%s][text]" value="%s" size="80" class="inputwidth">',
htmlspecialchars($key),
htmlspecialchars($content[$key]['text'])
);
print(help('articles-createarticle.html#articles-createarticle-articlecontent-texts-shorttext'));
print('</td></tr>');
break;
}
printf('<textarea name="content[%s][text]" cols="80" rows="15" class="inputwidth">%s</textarea>',
htmlspecialchars($key),
htmlspecialchars($content[$key]['text'])
);
print(help('articles-createarticle.html#articles-createarticle-articlecontent-texts-text'));
print('</td></tr>');
break;
oder in 4.1.x
case 'text': // {{{
// remove key from temporary content array so that only not used content is left
unset($_content[$key]);
// make sure an empty values exist for a key without content.
if (!array_key_exists($key, $content)) {
$content[$key] = array('id'=>'', 'text'=>'');
}
if ($value['short']==1) $value['inputmethod'] = 'text';
switch ($value['inputmethod']) {
case 'text': // {{{
printf('<tr><td class="leftrow">%s:</td><td class="rightrow">',
htmlspecialchars($name));
if (isset($value['label']) && trim($value['label'])!='') {
printf('%s<br /><br />', $value['label']);
}
if (empty($value['maximumlength'])) {
printf('<input type="text" name="content[%s][text]" value="%s" size="80" class="inputwidth" />',
htmlspecialchars($key),
htmlspecialchars($content[$key]['text'])
);
print(help('articles-createarticle.html#articles-createarticle-articlecontent-texts-shorttext'));
} else {
echo $length_script; $length_script = '';
printf('<input type="text" name="content[%1$s][text]" id="text%2$s" value="%4$s" size="80" class="inputwidth" ' .
'onKeyDown="textCounter(this.form.text%2$s, this.form.remLen%2$s, %3$s);" ' .
'onKeyUp=" textCounter(this.form.text%2$s, this.form.remLen%2$s, %3$s);" />',
htmlspecialchars($key),
$keymd5,
$value['maximumlength'],
htmlspecialchars($content[$key]['text'])
);
print(help('articles-createarticle.html#articles-createarticle-articlecontent-texts-shorttext'));
printf('<br />' . ___('%s characters left'),
'<input readonly type="text" name="remLen' . $keymd5 . '" size="4" maxlength="4" value="' .
($value['maximumlength'] - strlen($content[$key]['text'])) . '" />');
}
print('</td></tr>');
break; // }}}
case 'select': // {{{
$_lines = str_replace(array("\r\n", "\r", "\n"), "\n", $value['presetting']);
$_lines = explode("\n", $_lines);
// check for empty lines;
$_l = array();
foreach ($_lines as $line) {
if (trim($line=='')) continue;
$_l[] = trim($line);
}
$_lines = $_l;
if (count($_lines)==0) break;
printf('<tr><td class="leftrow">%s:</td><td class="rightrow">',
htmlspecialchars($name));
if (isset($value['label']) && trim($value['label'])!='') {
printf('%s<br /><br />', $value['label']);
}
echo '<select name="content['.htmlspecialchars($key).'][text]" class="inputwidth">';
$i = 0;
foreach ($_lines as $line) {
$i++;
$_name = $line;
$_value = $line;
// check if it is "name = value"?
if (1==preg_match('/(.*?)\s*[^\\]=\s*(.*)/', $line, $matches)) {
$_value = str_replace('\=', '=', $matches[1]);
$_name = str_replace('\=', '=', $matches[2]);
}
// the first one is default
if ($i==1 && $content[$key]['text']=='') {
$content[$key]['text'] = $_value;
}
echo '<option '
.'value="'.htmlspecialchars($_value).'" '
.($content[$key]['text']==$_value ? 'selected="selected">' : '>')
.htmlspecialchars($_name).'</option>';
}
echo '</select>';
print(help(''));
print('</td></tr>');
break; // }}}
case 'radio': // {{{
$_lines = str_replace(array("\r\n", "\r", "\n"), "\n", $value['presetting']);
$_lines = explode("\n", $_lines);
// check for empty lines;
$_l = array();
foreach ($_lines as $line) {
if (trim($line=='')) continue;
$_l[] = trim($line);
}
$_lines = $_l;
if (count($_lines)==0) break;
printf('<tr><td class="leftrow">%s:</td><td class="rightrow">',
htmlspecialchars($name));
if (isset($value['label']) && trim($value['label'])!='') {
printf('%s<br /><br />', $value['label']);
}
$i = 0;
foreach ($_lines as $line) {
$i++;
$line = trim($line);
$_name = $line;
$_value = $line;
// check if it is "name = value"?
if (1==preg_match('/(.*?)\s*[^\\]=\s*(.*)/', $line, $matches)) {
$_value = str_replace('\=', '=', $matches[1]);
$_name = str_replace('\=', '=', $matches[2]);
}
// the first one is always default with radiobuttons:
if ($i==1 && $content[$key]['text']=='') {
$content[$key]['text'] = $_value;
}
echo '<input type="radio" name="content['.htmlspecialchars($key).'][text]" '
.'id="'.md5($_value.$_name).'" '
.'value="'.htmlspecialchars($_value).'" '
.($content[$key]['text']==$_value ? 'checked="checked" />' : '/>')
.'<label for="'.md5($_value.$_name).'">'.htmlspecialchars($_name).'</label>';
if ($i==1) print(help(''));
echo '<br />';
}
print('</td></tr>');
break; // }}}
case 'checkbox': // {{{
$_lines = str_replace(array("\r\n", "\r", "\n"), "\n", $value['presetting']);
$_lines = explode("\n", $_lines);
// check for empty lines;
$_l = array();
foreach ($_lines as $line) {
if (trim($line=='')) continue;
$_l[] = trim($line);
}
$_lines = $_l;
if (count($_lines)==0) break;
printf('<tr><td class="leftrow">%s:</td><td class="rightrow">',
htmlspecialchars($name));
if (isset($value['label']) && trim($value['label'])!='') {
printf('%s<br /><br />', $value['label']);
}
$line = $_lines[0]; // the checkbox only allows the first line to be chosen
$_name = $line;
$_value = $line;
// check if it is "name = value"?
if (1==preg_match('/(.*?)\s*[^\\]=\s*(.*)/', $line, $matches)) {
$_value = str_replace('\=', '=', $matches[1]);
$_name = str_replace('\=', '=', $matches[2]);
}
echo '<input type="checkbox" name="content['.htmlspecialchars($key).'][text]" '
.'id="'.md5($_value.$_name).'" '
.'value="'.htmlspecialchars($_value).'" '
.($content[$key]['text']==$_value ? 'checked="checked" />' : '/>')
.'<label for="'.md5($_value.$_name).'">'.htmlspecialchars($_name).'</label>';
print(help(''));
print('</td></tr>');
break; // }}}
case 'none': // {{{
printf('<input type="hidden" name="content[%s][text]" value="%s" />',
htmlspecialchars($key),
htmlspecialchars($value['presetting'])
);
print('</td></tr>');
break; // }}}
case 'textarea': // default // {{{
default:
printf('<tr><td class="leftrow">%s:</td><td class="rightrow">',
htmlspecialchars($name));
if (isset($value['label']) && trim($value['label'])!='') {
printf('%s<br /><br />', $value['label']);
}
if (empty($value['maximumlength'])) {
printf('<textarea name="content[%1$s][text]" id="text%2$s" cols="80" rows="15" class="inputwidth">%3$s</textarea>',
htmlspecialchars($key),
$keymd5,
htmlspecialchars($content[$key]['text'])
);
print(help('articles-createarticle.html#articles-createarticle-articlecontent-texts-text'));
printf('<br /><a href="#" onClick="javascript:a = document.getElementById(\'text%1$s\'); if (a.rows>5) a.rows=a.rows-5; return false;">' .
'<img src="' . SKIN_URL . 'decrease.gif" width="20" height="18" align="absmiddle" alt="%2$s" />%2$s</a>',
$keymd5,
___('-decrease height')
);
echo ' ';
printf('<a href="#" onClick="javascript:a = document.getElementById(\'text%1$s\'); a.rows=a.rows+5; return false;">' .
'<img src="' . SKIN_URL . 'enlarge.gif" width="20" height="18" align="absmiddle" alt="%2$s" />%2$s</a>',
$keymd5,
___('-increase height')
);
} else {
echo $length_script; $length_script = '';
printf('<textarea name="content[%1$s][text]" id="text%2$s" cols="80" rows="%3$s" class="inputwidth" ' .
'onKeyDown="textCounter(this.form.text%2$s, this.form.remLen%2$s, %4$s);" ' .
'onKeyUp=" textCounter(this.form.text%2$s, this.form.remLen%2$s, %4$s);">%5$s</textarea>',
htmlspecialchars($key),
$keymd5,
ceil($value['maximumlength']/80)+1,
$value['maximumlength'],
htmlspecialchars($content[$key]['text'])
);
print(help('articles-createarticle.html#articles-createarticle-articlecontent-texts-text'));
printf('<br />' . ___('%s characters left'),
'<input readonly type="text" name="remLen' . $keymd5 . '" size="4" maxlength="4" value="' .
($value['maximumlength'] - strlen($content[$key]['text'])) . '" />');
}
print('</td></tr>');
break; // }}}
}
break; // }}}
=== REPLACE WITH / ERSETZEN DURCH ===
case 'text':
include(CPO_BASEDIR.'mod_text/includes/form_fields.inc.php');
break;