Kalendárium fordított dátum
Sziasztok!
Drupal 5.3, Date 5.x-1.8, Calendar 5.x-1.7 és magyarosítani szeretném a naptár dátumkezelését.
Ez előző hozzászólások alapján próbálkoztam, de az eredmény csak félsiker lett.
Ha kiteszem a naptárat egy jobb oldali blokkba, akkor "április 2008" lesz a blokk címe (ami randa), viszont a naptár fejlécében már (helyesen) "2008. ápr" lesz.
Ha rákattintok mondjuk egy beküldött eseményre, ami április 12-én van, akkor a bejövő node címe "szombat, április 12 2008" lesz (csúnyán), alatta a keretes naptár fejlécében "2008. április 13., vasárnap" szerepel (helyesen és szépen).
Természetesen a Calendar telepítése után létrehoztam egy Nézetet, a megfelelő paraméterekkel (Calendar: Year, Calendar: Month, Calendar: Day - Összes érték megjelenítése - Cím: %1, %2, %3) ahogy a Nagykönyvben meg van írva, tehát működik a naptár, a beküldött időpontokat megjelöli)
Ezt szúrtam be a template.php végére:
function phptemplate_calendar_nav_title($field_type, $view) { calendar_load_date_api(); switch ($field_type) { case 'YEAR': return $view->year; case 'MONTH': // Month navigation titles are used as links in blocks and in the year view. // For the timestamp, use the second day of the month because gm functions sometimes return the previous month $timestamp = date_array2unix(array('year' => $view->year, 'mon' => $view->month, 'mday' => 1)); if ($view->build_type == 'block' || $view->calendar_type == 'year') { return l(date_format_date('Y. M', $timestamp), $view->real_url .'/'. $view->year .'/'. $view->month, array(), calendar_url_append($view)); } else { return date_format_date('Y. F', $timestamp); } case 'DAY': $timestamp = date_array2unix(array('year' => $view->year, 'mon' => $view->month, 'mday' => $view->day, 'hours' => 24)); return date_format_date('Y. F j., l', $timestamp); case 'WEEK': return t("Week of @date", array('@date' => date_format_date('Y. F j.', calendar_week('start_timestamp', $view, $view->week)))); } }
- A hozzászóláshoz regisztráció és bejelentkezés szükséges
en csinalnek egy uj node
en csinalnek egy uj node tipust, peldaul hirdetes.
a /themes/garland/ ala betehetsz egy node-hirdetes.tpl.php file-t amit a node.tpl.php atmasolasaval csinalod meg. miutan atmasoltad, megszerkeszted a node-hirdetes.tpl.php -t, hogy megjeleniteskor tegye bele valahova az adott node "nid"-jet.
<?php phptemplate_comment_wrapper(NULL, $node->type); ?> <div id="node-<?php print $node->nid; ?>" class="node<?php if ($sticky) { print ' sticky'; } ?><?php if (!$status) { print ' node-unpublished'; } ?>"> <?php print $picture ?> <?php if ($page == 0): ?> <h2><a href="<?php print $node_url ?>" title="<?php print $title ?>"><?php print $title ?></a></h2> <?php endif; ?> <?php if ($submitted): ?> <span class="submitted"><?php print t('!date — !username', array('!username' => theme('username', $node), '!date' => format_date($node->created))); ?></ <?php endif; ?> <div class="content"> <?php print $content ?> <?php print t('hiredetes kodja: %kod',array('%kod'=>$node->nid)); ?> </div> <div class="clear-block clear"> <div class="meta"> <?php if ($taxonomy): ?> <div class="terms"><?php print $terms ?></div> <?php endif;?> </div> <?php if ($links): ?> <div class="links"><?php print $links; ?></div> <?php endif; ?> </div> </div> ?>
ezt hiszem igy valahogy, (ez drupal 5 -alatt asszem jo. drupal6 eseten csak merem remelni)
- A hozzászóláshoz regisztráció és bejelentkezés szükséges
Csak a tipli fájlt kell változtatni
Ím:
$output = "<div class=\"fields\">"; $time_period = variable_get('user_block_seconds_online', 2700); // Itt a pp altal is javasolt biztonsagos megoldas. $uid = arg(1); // get the current userid that is being viewed. $users = db_query("SELECT uid, name, access FROM {users} WHERE access >= %d AND uid = %d", time() - $time_period, $uid); $total_users = db_result($users); if ($total_users == 1) { $output .= t('A felhasznalo jelenleg online'); } else { $output .= t('A felhasznalo jelenleg offline'); } $output .= "</div>"; // Innentol ez mar az eredeti theme_user_profile() tartalma. $output .= '<div class="profile">'; $output .= theme('user_picture', $account); foreach ($fields as $category => $items) { if (strlen($category) > 0) { $output .= '<h2 class="title">'. check_plain($category) .'</h2>'; } $output .= '<dl>'; foreach ($items as $item) { if (isset($item['title'])) { $output .= '<dt class="'. $item['class'] .'">'. $item['title'] .'</dt>'; } $output .= '<dd class="'. $item['class'] .'">'. $item['value'] .'</dd>'; } $output .= '</dl>'; } $output .= '</div>'; echo $output;
Ezután még a bio hozzácsapja a saját tartalmát és kész.
Megjegyzés: A t() függvényt csak angol szöveggel szabad használni. Majd ezt lehet később magyarítani. Így is működik, de nem ajánlott.
- A hozzászóláshoz regisztráció és bejelentkezés szükséges
a $form_state jó írány
nem tudom, h azóta megoldottad-e, de jó irányba keresgélsz, csak ahhoz hogy működjön szükséges néhány lépés.
Első, hogy a formodnak fogadnia kell a $form_state változót első paraméterként:
function pelda_szuro_form(&$form_state = NULL) { //form definíció... }
A következő lépés, hogy meg kell kérned a FAPI-t, hogy építse újra a formodat beküldés után. Erre két lehetőséged van: vagy a $form_state['rebuild']-et állítod TRUE-ra, vagy a $form_state['storage']-ba teszel valamit:
hivatalos:
function pelda_szuro_form_submit($form, &$form_state) { //eredémyek összegyűjtése $eredmenyek-be.... //küldjük vissza magunknak $form_state['storage']['pelda_eredmenyek'] = $eredmenyek; }
de ez is működik:
function pelda_szuro_form_submit($form, &$form_state) { //eredémyek összegyűjtése $eredmenyek-be.... //küldjük vissza magunknak $form_state['pelda_eredmenyek'] = $eredmenyek; $form_state['rebuild'] = TRUE; }
Bármelyket választod a _submit() után a FAPI újra meghívja a formod, csak mostmár nem egy "üres" $form_state-el, hanem azzal, amit a _submit() "visszaadott":
function pelda_szuro_form(&$form_state = NULL) { //rövidítsünk: $values = &$form_state['values']; $form['szuro_elem'] = array( '#type' => 'textfield', '#title' => t('Example filter'),//hogy fordítható legyen //ez azért kell, hogy beküldés után megjelenjen a beküldött érték '#default_value' => isset($values['szuro_elem']) ? $values['szuro_elem'] : '', ); //feltéve hogy a storage-ot használtad és $eredmenyek egy link lista $storage = &$form_state['storage']; if (isset($storage['pelda_eredmenyek']) && !empty($storage['pelda_eredmenyek'])) { $form['eredmenyek'] = array( '#type' => 'markup', '#value' => theme('item_list', $storage['pelda_eredmenyek']), ); } return $form; }
Egyébként ugyan ezzel a megoldással működnek a többoldalas űrlapok is, csak akkor küldönböző form definíciót adsz vissza a $form_state állapotának függvényében, bár ha úgy vesszük, akkor ez is egy többoldalas űrlap: az első oldalon nincs eredmény, a másodikon pedig van.
SEO: remélem ez így most elég aboros barát. :D
- A hozzászóláshoz regisztráció és bejelentkezés szükséges
Webform kezelésre példa
Szia!
Külön modul írásával egy hasonló feladatot így oldottam meg. A kódot lerövidítettem, hogy csak egy rövid példa maradjon.
pelda.module:
pelda.js: