old faq version

main
Philip Häusler 12 years ago
parent 1517422ed8
commit ddbc5a9db2

@ -1,79 +1,48 @@
<?php <?php
function admin_faq_create_edit_table($languages, $prefills = array()) {
$form_questions = array('Question');
$form_answers = array('Answer');
foreach ($languages as $language) {
$form_questions[] = '<textarea name="question[' . $language . ']" style="height: 4em;">'
. (!empty($prefills[$language])? $prefills[$language]['question'] : '')
. '</textarea>';
$form_answers[] = '<textarea name="answer[' . $language . ']" style="height: 4em;">'
. (!empty($prefills[$language])? $prefills[$language]['answer'] : '')
. '</textarea>';
}
return table(
array_merge(array(''), $languages),
array($form_questions, $form_answers),
false);
}
function admin_faq() { function admin_faq() {
$languages = sql_select("SELECT DISTINCT `Sprache` FROM `FAQ`");
$languages = array_map('array_shift', $languages);
if (!isset ($_REQUEST['action'])) { if (!isset ($_REQUEST['action'])) {
$faqs = array(); $faqs_html = "";
foreach ($languages as $language) { $faqs = sql_select("SELECT * FROM `FAQ`");
$lang_html .= '<th>' . $language . "</th>\n"; foreach ($faqs as $faq) {
$langfaqs = sql_select("SELECT `QID`, `Frage`, `Antwort` FROM `FAQ` WHERE `Sprache` = '" . sql_escape($language) . "'"); $faqs_html .= sprintf('<tr><td> <dl><dt>%s</dt><dd>%s</dd></dl> </td>' . '<td> <dl><dt>%s</dt><dd>%s</dd></dl> </td>' . '<td><a href="%s&action=edit&id=%s">Edit</a></td></tr>', $faq['Frage_de'], $faq['Antwort_de'], $faq['Frage_en'], $faq['Antwort_en'], page_link_to('admin_faq'), $faq['FID']);
foreach ($langfaqs as $langfaq) {
if (!isset($faqs[$langfaq['QID']]))
$faqs[$langfaq['QID']] = array();
$faqs[$langfaq['QID']][$language] = sprintf('<dl><dt>%s</dt><dd>%s</dd></dl>', $langfaq['Frage'], $langfaq['Antwort']);
$faqs[$langfaq['QID']]['edit'] = sprintf('<a href="%s&action=edit&id=%s">Edit</a>', page_link_to('admin_faq'), $langfaq['QID']);
}
} }
$faqs_html = table(array_merge(array_combine($languages, $languages), array('edit' => '')), $faqs);
return template_render('../templates/admin_faq.html', array ( return template_render('../templates/admin_faq.html', array (
'link' => page_link_to("admin_faq"), 'link' => page_link_to("admin_faq"),
'faqs' => $faqs_html, 'faqs' => $faqs_html
'new_form' => admin_faq_create_edit_table($languages)
)); ));
} else { } else {
switch ($_REQUEST['action']) { switch ($_REQUEST['action']) {
case 'create' : case 'create' :
$frage = strip_request_item_nl('frage');
$antwort = strip_request_item_nl('antwort');
$question = strip_request_item_nl('question');
$answer = strip_request_item_nl('answer');
sql_query("INSERT INTO `FAQ` SET `Frage_de`='" . sql_escape($frage) . "', `Frage_en`='" . sql_escape($question) . "', `Antwort_de`='" . sql_escape($antwort) . "', `Antwort_en`='" . sql_escape($answer) . "'");
header("Location: " . page_link_to("admin_faq"));
break;
case 'save' : case 'save' :
if ($_REQUEST['action'] == 'create') {
sql_query("START TRANSACTION");
$qid = sql_select("SELECT MAX(`QID`)+1 AS QID FROM `FAQ`");
$qid = $qid[0]['QID'];
}
else {
if (isset ($_REQUEST['id']) && preg_match("/^[0-9]{1,11}$/", $_REQUEST['id'])) if (isset ($_REQUEST['id']) && preg_match("/^[0-9]{1,11}$/", $_REQUEST['id']))
$qid = $_REQUEST['id']; $id = $_REQUEST['id'];
else else
return error("Incomplete call, missing FAQ ID.", true); return error("Incomplete call, missing FAQ ID.", true);
$faq = sql_select("SELECT `QID` FROM `FAQ` WHERE `QID`=" . sql_escape($qid)); $faq = sql_select("SELECT * FROM `FAQ` WHERE `FID`=" . sql_escape($id) . " LIMIT 1");
if (count($faq) == 0) if (count($faq) > 0) {
return error("No FAQ found.", true); list ($faq) = $faq;
}
$values = array(); $frage = strip_request_item_nl('frage');
foreach ($_POST['question'] as $lang => $question) { $antwort = strip_request_item_nl('antwort');
if (!in_array($lang, $languages)) $question = strip_request_item_nl('question');
continue; $answer = strip_request_item_nl('answer');
if (empty($question))
sql_query("DELETE IGNORE FROM `FAQ` WHERE `QID` = $qid AND `Sprache` = '" . sql_escape($lang) . "'"); sql_query("UPDATE `FAQ` SET `Frage_de`='" . sql_escape($frage) . "', `Frage_en`='" . sql_escape($question) . "', `Antwort_de`='" . sql_escape($antwort) . "', `Antwort_en`='" . sql_escape($answer) . "' WHERE `FID`=" . sql_escape($id) . " LIMIT 1");
else {
$question = strip_item($question);
$answer = strip_item($_POST['answer'][$lang]);
$values[] = "('" . sql_escape($lang) . "', '" . sql_escape($question) . "', '" . sql_escape($answer) . "', $qid)";
}
}
if (!empty($values))
sql_query("REPLACE INTO `FAQ` (`Sprache`, `Frage`, `Antwort`, `QID`) VALUES " . implode(', ', $values));
sql_query("COMMIT");
header("Location: " . page_link_to("admin_faq")); header("Location: " . page_link_to("admin_faq"));
} else
return error("No FAQ found.", true);
break; break;
case 'edit' : case 'edit' :
@ -82,17 +51,17 @@ function admin_faq() {
else else
return error("Incomplete call, missing FAQ ID.", true); return error("Incomplete call, missing FAQ ID.", true);
$faq = sql_select("SELECT `Sprache`, `Frage`, `Antwort` FROM `FAQ` WHERE `QID`=" . sql_escape($id)); $faq = sql_select("SELECT * FROM `FAQ` WHERE `FID`=" . sql_escape($id) . " LIMIT 1");
if (count($faq) > 0) { if (count($faq) > 0) {
$prefills = array(); list ($faq) = $faq;
foreach ($faq as $row) {
$prefills[$row['Sprache']] = array('question' => $row['Frage'], 'answer' => $row['Antwort']);
}
return template_render('../templates/admin_faq_edit_form.html', array ( return template_render('../templates/admin_faq_edit_form.html', array (
'link' => page_link_to("admin_faq"), 'link' => page_link_to("admin_faq"),
'id' => $id, 'id' => $id,
'form' => admin_faq_create_edit_table($languages, $prefills) 'frage' => $faq['Frage_de'],
'antwort' => $faq['Antwort_de'],
'question' => $faq['Frage_en'],
'answer' => $faq['Antwort_en']
)); ));
} else } else
return error("No FAQ found.", true); return error("No FAQ found.", true);
@ -104,8 +73,11 @@ function admin_faq() {
else else
return error("Incomplete call, missing FAQ ID.", true); return error("Incomplete call, missing FAQ ID.", true);
$deleted = sql_query("DELETE FROM `FAQ` WHERE `QID`=" . sql_escape($id)); $faq = sql_select("SELECT * FROM `FAQ` WHERE `FID`=" . sql_escape($id) . " LIMIT 1");
if ($deleted) { if (count($faq) > 0) {
list ($faq) = $faq;
sql_query("DELETE FROM `FAQ` WHERE `FID`=" . sql_escape($id) . " LIMIT 1");
header("Location: " . page_link_to("admin_faq")); header("Location: " . page_link_to("admin_faq"));
} else } else
return error("No FAQ found.", true); return error("No FAQ found.", true);

@ -1,19 +1,22 @@
<?php <?php
function guest_faq() { function guest_faq() {
$html = ""; $html = "";
if ($_SESSION['Sprache'] == "DE") { $faqs = sql_select("SELECT * FROM `FAQ`");
$faqs = sql_select("SELECT * FROM `FAQ` WHERE `Sprache` = 'de'");
} else {
$faqs = sql_select("SELECT * FROM `FAQ` WHERE `Sprache` = 'en'");
}
foreach ($faqs as $faq) { foreach ($faqs as $faq) {
$html .= "<dl>"; $html .= "<dl>";
if ($_SESSION['Sprache'] == "DE") {
$html .= sprintf( $html .= sprintf(
'<dt>%s</dt> <dd>%s</dd>', '<dt>%s</dt> <dd>%s</dd>',
$faq['Frage'], $faq['Frage_de'],
$faq['Antwort'] $faq['Antwort_de']
); );
} else {
$html .= sprintf(
'<dt>%s</dt> <dd>%s</dd>',
$faq['Frage_en'],
$faq['Antwort_en']
);
}
$html .= "</dl>"; $html .= "</dl>";
} }
return $html; return $html;

@ -1,6 +1,39 @@
Edit FAQ: Edit FAQ:
<form action="%link%&action=save" method="post"> <form action="%link%&action=save" method="post">
%form% <table>
<tr>
<td>
Frage
</td>
<td>
<textarea name="frage">%frage%</textarea>
</td>
</tr>
<tr>
<td>
Antwort
</td>
<td>
<textarea name="antwort">%antwort%</textarea>
</td>
</tr>
<tr>
<td>
Question
</td>
<td>
<textarea name="question">%question%</textarea>
</td>
</tr>
<tr>
<td>
Answer
</td>
<td>
<textarea name="answer">%answer%</textarea>
</td>
</tr>
</table>
<input type="hidden" name="id" value="%id%" /><input type="submit" name="submit" value="Save" /> <input type="hidden" name="id" value="%id%" /><input type="submit" name="submit" value="Save" />
</form><hr/> </form><hr/>
<form action="%link%&action=delete" method="post"> <form action="%link%&action=delete" method="post">

Loading…
Cancel
Save