Gästebuch -> Edit -> für Admins
Eingetragen von Chuck (7)
am 01.12.2007 - 02:38 Uhr in
am 01.12.2007 - 02:38 Uhr in
Hallo,
ich war auf der Suche nach einer Lösung Gästebuch Einträge als Admin zu editieren, dabei habe ich folgendes gefunden:
Allerdings hatte ich damit (Drupal 5.3 und PHP5 im CGI Mode) folgenden Fehler im Webserver Log:
Premature end of script headers: php5
Mit diesem leicht abgewandelten Patch funktioniert es nun....
--- guestbook.module.orig 2007-12-01 01:07:59.000000000 +0100
+++ guestbook.module 2007-12-01 02:02:50.000000000 +0100
@@ -17,7 +17,7 @@
define('GUESTBOOK_PAGER_ABOVE', 0x0001);
define('GUESTBOOK_PAGER_BELOW', 0x0002);
-define('GUESTBOOK_TEXTAREA_ROWS', 8);
+define('GUESTBOOK_TEXTAREA_ROWS', 18);
/**
* Implementation of hook_menu()
@@ -285,6 +285,8 @@
// Delete or comment an entry
if (_guestbook_access('administer', $uid) && is_numeric($op_id)) {
switch ($op) {
+ case "edit": //zelf toegevoegd
+ return guestbook_edit_entry($uid, $op_id);
case 'delete':
return guestbook_delete_entry_confirm_page($uid, $op_id);
case 'comment':
@@ -534,6 +536,92 @@
return drupal_get_form('guestbook_delete_entry_confirm', $uid, $entry_id );
}
+/**
+ * zelf toegevoegde functie om guestbook_entry bewerkformulier
+ * gebaseerd op guestbook_form_entry() en guestbook_delete_entry_confirm()
+ *
+ * @param integer $uid nummer van het gastenboek
+ * @param integer $entry_id nummer van het gastenboekbericht
+ */
+function guestbook_edit_entry_form($uid, $entry_id) {
+ global $user;
+
+ $entry = db_fetch_array(db_query("SELECT * FROM {guestbook} WHERE id = %d", $entry_id));
+
+ $form = array();
+ $form['entry_id'] = array('#type' => 'value', '#value' => $entry['id']);
+ $form['author'] = array('#type' => 'value', '#value' => $entry['author']);
+ if ($entry['author'] == 0 ) {
+ // fields for anonymous poster
+ $form['anonname'] = array(
+ '#type' => 'textfield', '#title' => t('Name'),
+ '#size' => 32, '#maxlength' => 64, '#required' => TRUE,
+ '#default_value' => $entry['anonname']);
+ $anonymous_fields = (array) variable_get('guestbook_anonymous_fields', array('email','website'));
+ if (in_array('email', $anonymous_fields)) {
+ $form['anonemail'] = array(
+ '#type' => 'textfield', '#title' => t('E-Mail'),
+ '#size' => 32, '#maxlength' => 128,
+ '#default_value' => $entry['anonemail']);
+ }
+ if (in_array('website', $anonymous_fields)) {
+ $form['anonwebsite'] = array(
+ '#type' => 'textfield', '#title' => t('Homepage'),
+ '#size' => 32, '#maxlength' => 128,
+ '#default_value' => $entry['anonwebsite']);
+ }
+ }
+ $filter_tips = variable_get('guestbook_filter_tips', TRUE) ? _guestbook_form_filter_tips() : NULL;
+ $form['message'] = array(
+ '#type' => 'textarea', '#title' => t('Message'),
+ '#cols' => 32, '#rows' => GUESTBOOK_TEXTAREA_ROWS, '#description' => $filter_tips, '#required' => TRUE,
+ '#default_value' => $entry['message']);
+ $form['send'] = array(
+ '#type' => 'submit', '#value' => t('send'));
+ $form['uid'] = array(
+ '#type' => 'value', '#value' => $uid);
+ $form['access'] = array(
+ '#type' => 'value', '#value' => _guestbook_access('post', $uid));
+ $form['display'] = array(
+ '#type' => 'value', '#value' => 'page');
+ return $form;
+}
+
+function guestbook_edit_entry($uid, $entry_id) {
+ $output = drupal_get_form('guestbook_edit_entry_form', $uid, $entry_id);
+ return $output;
+}
+
+/**
+ * zelf toegevoegd om aangepaste guestbook entry op te slaan
+ * gebaseerd op guestbook_delete_entry_confirm_submit() en guestbook_form_entry_submit()
+ *
+ * @param integer $uid nummer van het gastenboek
+ * @param integer $entry_id nummer van het gastenboekbericht
+ * @return string url
+ */
+function guestbook_edit_entry_form_submit($form_id, $form_values) {
+ global $user;
+
+ if (_guestbook_access('administer', $form_values['uid']) && $form_values['send']) {
+ if ($form_values['author'] == 0) {
+ // anonymous user
+ $result = db_query("UPDATE {guestbook}
+ SET anonname = '%s', anonemail = '%s', anonwebsite = '%s',
+ author = '%d', recipient = '%d', message = '%s'
+ WHERE id = %d", $form_values['anonname'], $form_values['anonemail'], $form_values['anonwebsite'],
+ $form_values['author'], $uid, $form_values['message'], $form_values['entry_id']);
+ }
+ else if ($form_values['author'] > 0) {
+ // registered user
+ $result = db_query("UPDATE {guestbook}
+ SET author = '%d', recipient = '%d', message = '%s'
+ WHERE id = %d", $form_values['author'], $uid, $form_values['message'], $form_values['entry_id']);
+ }
+ }
+ return 'guestbook/'. $form_values['uid'];
+}
+
function guestbook_delete_entry_confirm($uid, $entry_id) {
$entry = db_fetch_array(db_query(
"SELECT g.*, u1.name, u1.data, u1.picture, u2.name as commentby
@@ -639,6 +727,7 @@
$pager = $_GET['page'] ? 'page='. $_GET['page'] : NULL;
$output .= '<div class="links">» ';
$output .= l(t('Delete entry'), "guestbook/$uid/delete/{$entry['id']}", array(), $pager) .' | ';
+ $output .= l(t('edit entry'), "guestbook/$uid/edit/{$entry["id"]}", array(), $pager) ." | ";
$output .= l($entry['comment'] == '' ? t('Add comment') : t('Edit comment'), "guestbook/$uid/comment/{$entry['id']}", array(), $pager, 'comment-entry');
$output .= '</div>';
}
Ich wollte dies eigentlich auf drupal.org posten doch ich raffe es nicht wie mit den Userdaten von hier mich dort anmelden kann :( .
Gruß,
Chuck
- Anmelden oder Registrieren um Kommentare zu schreiben
Warum registrierst Du Dich
am 01.12.2007 - 03:20 Uhr
Warum registrierst Du Dich auf drupal.org nicht separat?
-------------
quiptime
Nur tote Fische schwimmen mit dem Strom.
Da geht noch was.
quiptime wrote: Warum
am 01.12.2007 - 22:11 Uhr
Warum registrierst Du Dich auf drupal.org nicht separat?
Hab ich ja jetzt auch gemacht....
Da ich mich aber gerade hier frisch angemeldet hatte und hier sowohl auch bei drupal.org stand das man sich dann nicht erneut registrieren müsste --> dachte ich lasse es mal sein....
Gruß,
Chuck
welche datei ist das die ich
am 11.08.2008 - 11:11 Uhr
welche datei ist das die ich umschreiben muss ?
ich nutze drupal 6.3, geht das dort auch mit dem guestbook modul ?