Hallo zusammen
Ich frage mich, ob es eine Möglichkeit gibt, einzelne Sprachen "inaktiv" zu schalten. zb. Dass sie im Frontent nicht sichtbar werden nur im backend.. z.b. wenn einzelne Produkte noch nicht übersetzt wurden.
grüsse
gnadirap
Hallo zusammen
Ich frage mich, ob es eine Möglichkeit gibt, einzelne Sprachen "inaktiv" zu schalten. zb. Dass sie im Frontent nicht sichtbar werden nur im backend.. z.b. wenn einzelne Produkte noch nicht übersetzt wurden.
grüsse
gnadirap
Nein, nicht wirklich.
Das Problem habe ich aber schonmal gehabt und mir gedacht, in der v2 kann man das dann einfach die entsprechende Sprache ein, bzw. ausschalten.
Aber derzeit gibt es keine Alternative.
Wenn ich mir den Source so anschaue, benötigt es eigentlich nur 4 erweiterungen..
1. in der datenbank, ein zusätzliches Feld "active, tinyint(1)"
2. im Adminbereich->Sprachen->Bearbeiten ein Radiobutton, active / not active
3. in der Funktion, welche die Session generiert, abfrage im SQL-Query -> "and active = '1' " anfügen.
4. in der Function, welche die Box "box_language" mit Daten versorgt, ebenfalls im SQL-Query einfügen -> "and active ='1' ".
Falls jemand mir sagen kann, wo ich Punkt 3 und 4 finde, biete ich den Source hier zum download an, sobald dieser von den Admins akzeptiert wurde.
Grüsse
Gnadirap
Hier mein Vorgehen zum Hinzufügen (PART 1 )
1. Datenbank
Über PHPMyAdmin, in der Tabelle "language" das Feld "active" hinzufügen
name: active
type: tinyint
length: 1
standard: 1 (oder 0, je nach Wunsch)
2. Languagefile anpassen (Deutsch)
Datei: /lang/german/admin/language.php
Hinzufügen:
[INDENT]
define('TEXT_INFO_ACTIVE','aktiv');
define('TEXT_INFO_INACTIVE','inaktiv');
[/INDENT]
3. Adminbereich anpassen
Datei: /admin/language.php
Query erweitern (Zeile 217) (Active Hinzufügen)
[INDENT] $languages_query_raw = "select languages_id, name, code, image, directory, sort_order,language_charset,active from " . TABLE_LANGUAGES . " order by sort_order";
[/INDENT]
Auswahlmöglichkeit aktiv/inaktiv
Hinzufügen: (Zeile 280 / 281 ) ( case 'new')
[INDENT]
$contents[] = array('text' => '<br />' . TABLE_HEADING_LANGUAGE_NAME.'<br />'.xtc_draw_radio_field('active',1,true) . ' '.TEXT_INFO_ACTIVE. ' <br />'.xtc_draw_radio_field('active',0,false).' '.TEXT_INFO_INACTIVE);[/INDENT]
Hinzufügen: (Zeile 295 / 296) ( case 'edit')
[INDENT]if($lInfo->active==1){
$contents[] = array('text' => '<br />' . TABLE_HEADING_LANGUAGE_NAME.'<br />'.xtc_draw_radio_field('active',1,true) . ' '.TEXT_INFO_ACTIVE. ' <br />'.xtc_draw_radio_field('active','0',false).' '.TEXT_INFO_INACTIVE);
} else {
$contents[] = array('text' => '<br />' . TABLE_HEADING_LANGUAGE_NAME.'<br />'.xtc_draw_radio_field('active',1,false) . ' '.TEXT_INFO_ACTIVE. ' <br />'.xtc_draw_radio_field('active','0',true).' '.TEXT_INFO_INACTIVE);
}[/INDENT]
Nun gehts ans Speichern
Hinzufügen Zeile 29 (case 'insert' )
Erweiterung durch Active im Insert und in den Values
[INDENT]
xtc_db_query("insert into " . TABLE_LANGUAGES . " (name, code, image, directory, sort_order,language_charset,active) values ('" . xtc_db_input($name) . "', '" . xtc_db_input($code) . "', '" . xtc_db_input($image) . "', '" . xtc_db_input($directory) . "', '" . xtc_db_input($sort_order) . "', '" . xtc_db_input($charset) . "','".xtc_db_input($active)."')");
[/INDENT]
Hinzufügen ab Zeile 118 (case 'save')
zuerst beim abruf der Variable aus dem $_POST.
[INDENT]$active = xtc_db_prepare_input($_POST['active']);[/INDENT]
nun den Update-Query erweitern
[INDENT]xtc_db_query("update " . TABLE_LANGUAGES . " set name = '" . xtc_db_input($name) . "', code = '" . xtc_db_input($code) . "', image = '" . xtc_db_input($image) . "', directory = '" . xtc_db_input($directory) . "', sort_order = '" . xtc_db_input($sort_order) . "', language_charset = '" . xtc_db_input($charset) . "', active = '" . xtc_db_input($active) . "' where languages_id = '" . xtc_db_input($lID) . "'");[/INDENT]
Hier mein Vorgehen FRONTEND (PART II )
4. Session bearbeiten
Datei: /includes/classes/language.php
Ändern (Erweitern vom Query)
[INDENT]$languages_query = xtc_db_query("select languages_id, name, code, image, directory,language_charset from " . TABLE_LANGUAGES . " WHERE active ='1' order by sort_order");[/INDENT]
Und Fertig...
Ich warte gerne auf eure Bestätigung.. Bei mir funktionierts jetzt jedenfalls.
Grüsse
Gnadirap
Erweiterung zu Punkt 3:
Damit man auf den ersten Blick sieht, ob die Sprache aktiv, oder inaktiv ist, sobald eine Sprache markiert ist (im rechten Tabellenfeld )
Ca. Zeile 315 (Switch -> default )
nach Zeile 325 hinzufügen:
[INDENT]
if($lInfo->active==1){
$contents[] = array('text' => '<br />' . TABLE_HEADING_LANGUAGE_NAME.': <b>'.TEXT_INFO_ACTIVE.'</b>');
} else {
$contents[] = array('text' => '<br />' . TABLE_HEADING_LANGUAGE_NAME.': <b>'.TEXT_INFO_INACTIVE.'</b>');
}
[/INDENT]
Anzeige in der Haupttabelle, ob eine Sprache Aktiv ist, oder nicht
Datei: /lang/german/admin/languages.php
Hinzufügen:
[INDENT]define('TABLE_HEADING_LANGUAGE_STATUS','Status');[/INDENT]
Datei: /admin/languages.php
Erweiterung der Main-Table:
[INDENT]
<tr class="dataTableHeadingRow">
<td class="dataTableHeadingContent"><?php echo TABLE_HEADING_LANGUAGE_NAME; ?></td>
<td class="dataTableHeadingContent"><?php echo TABLE_HEADING_LANGUAGE_CODE; ?></td>
<td class="dataTableHeadingContent"><?php echo TABLE_HEADING_LANGUAGE_STATUS; ?></td>
<td class="dataTableHeadingContent" align="right"><?php echo TABLE_HEADING_ACTION; ?> </td>
</tr>
[/INDENT]
Anschliessend entsprechend erweitern:
von:
[INDENT]
<td class="dataTableContent"><?php echo $languages['code']; ?></td>
<td class="dataTableContent" align="right"><?php if ( (is_object($lInfo)) && ($languages['languages_id'] == $lInfo->languages_id) ) { echo xtc_image(DIR_WS_IMAGES . 'icon_arrow_right.gif'); } else { echo '<a href="' . xtc_href_link(FILENAME_LANGUAGES, 'page=' . $_GET['page'] . '&lID=' . $languages['languages_id']) . '">' . xtc_image(DIR_WS_IMAGES . 'icon_info.gif', IMAGE_ICON_INFO) . '</a>'; } ?> </td>
[/INDENT]
nach:
[INDENT]
<td class="dataTableContent"><?php echo $languages['code']; ?></td>
<?
if( (is_object($lInfo)) && ($languages['active']==$lInfo->active)){
echo '<td class="dataTableContent">'.TEXT_INFO_ACTIVE.'</td>';
} else {
echo '<td class="dataTableContent">'.TEXT_INFO_INACTIVE.'</td>';
}
?>
<td class="dataTableContent" align="right"><?php if ( (is_object($lInfo)) && ($languages['languages_id'] == $lInfo->languages_id) ) { echo xtc_image(DIR_WS_IMAGES . 'icon_arrow_right.gif'); } else { echo '<a href="' . xtc_href_link(FILENAME_LANGUAGES, 'page=' . $_GET['page'] . '&lID=' . $languages['languages_id']) . '">' . xtc_image(DIR_WS_IMAGES . 'icon_info.gif', IMAGE_ICON_INFO) . '</a>'; } ?> </td>
[/INDENT]
Du hast eine Menge Flüchtigkeitsfehler drin, aber der Ansatz ist gut. So ähnlich habe ich es auch gemacht.
Danke für dein Feedback..
Kannst du mir sagen, wo die Fehler sind? Damit ich diese umgehendst bereinigen kann.
Grüsse und Danke
Gnadirap
Hinzufügen: (Zeile 295 / 296) ( case 'edit')[INDENT]if($lInfo->active==1){
$contents[] = array('text' => '<br />' . TABLE_HEADING_LANGUAGE_NAME.'<br />'.xtc_draw_radio_field('active',1,true) . ' '.TEXT_INFO_ACTIVE. ' <br />'.xtc_draw_radio_field('active','0',false).' '.TEXT_INFO_INACTIVE);
} else {
$contents[] = array('text' => '<br />' . TABLE_HEADING_LANGUAGE_NAME.'<br />'.xtc_draw_radio_field('active',1,false) . ' '.TEXT_INFO_ACTIVE. ' <br />'.xtc_draw_radio_field('active','0',true).' '.TEXT_INFO_INACTIVE);
}[/INDENT]
Mache daraus:
$contents[] = array('text' => '<br />' . TABLE_HEADING_LANGUAGE_NAME.'<br />'.xtc_draw_radio_field('active','1',($lInfo->active=='1')?true:false) . ' '.TEXT_INFO_ACTIVE. ' <br />'.xtc_draw_radio_field('active','0',($lInfo->active=='0')?true:false).' '.TEXT_INFO_INACTIVE); }
Woher kommen die $active?
Im case 'insert' fehlt demnach:
Hinzufügen Zeile 29 (case 'insert' )
Erweiterung durch Active im Insert und in den Values[INDENT]
xtc_db_query("insert into " . TABLE_LANGUAGES . " (name, code, image, directory, sort_order,language_charset,active) values ('" . xtc_db_input($name) . "', '" . xtc_db_input($code) . "', '" . xtc_db_input($image) . "', '" . xtc_db_input($directory) . "', '" . xtc_db_input($sort_order) . "', '" . xtc_db_input($charset) . "','".xtc_db_input($active)."')");
[/INDENT]Hinzufügen ab Zeile 118 (case 'save')
zuerst beim abruf der Variable aus dem $_POST.[INDENT]$active = xtc_db_prepare_input($_POST['active']);[/INDENT]nun den Update-Query erweitern[INDENT]xtc_db_query("update " . TABLE_LANGUAGES . " set name = '" . xtc_db_input($name) . "', code = '" . xtc_db_input($code) . "', image = '" . xtc_db_input($image) . "', directory = '" . xtc_db_input($directory) . "', sort_order = '" . xtc_db_input($sort_order) . "', language_charset = '" . xtc_db_input($charset) . "', active = '" . xtc_db_input($active) . "' where languages_id = '" . xtc_db_input($lID) . "'");[/INDENT]
Nun, ich weiß was jedes einzelne Stückchen Code macht, aber ein "Laie" kommt damit, glaube ich, nicht so richtig zu recht. Versuche mal Struktur in den Code zu bekommen. Etwa so:
#################################
/admin/language.php
Suche:
Füge danach ein: oder Ersetze mit:
----------------------------------------------------------
Ergänzungen gleiche Datei
#################################
/includes/ nächste Datei
#################################
Nutze die Code Funktion dieses Editors, dann bleibts auch übersichtlich
Ansonsten funktioniert das natürlich alles.
Vielen Dank siekiera
Habe die Änderungen gleich umgesetzt.
Werde mich an die "Quotes" halten, beim nächsten mal, wenn ich was publiziere.
Grüsse
Gnadirap