6 http://www.tanarurkerem.hu/node/344
8 Készíts modult, mely a következő widgetet/kisalkalmazást megjeleníti a következő módon:
10 1. A MODULNEVE útvonalon egy oldalként
11 2. Egy blokként amit bárhova kirakhatunk
12 3. Egy szűrőként, ami a [widget] szöveget lecseréli a widgetre.
16 <script type="text/javascript" src="http://feeds.delicious.com/v2/js/networkbadge/tanarurkerem?showadd&icon=s&name&itemcount&nwcount&fancount"></script>
20 /* modul azonosító konstansként */
21 define('MODULE_ID', 'nevergone_1');
24 define('WIDGET_USER', 'tanarurkerem');
27 define('WIDGET', '<script type="text/javascript" src="http://feeds.delicious.com/v2/js/networkbadge/' . WIDGET_USER . '?showadd&icon=s&name&itemcount&nwcount&fancount"></script>');
30 /* hook_menu() implementáció */
31 function nevergone_1_menu() {
32 $items['admin/content/' . MODULE_ID] = array(
33 'title' => MODULE_ID . ' #tuksi02 settings',
34 'page callback' => drupal_get_form,
35 'page arguments' => array('nevergone_1_settings_form'),
36 'access arguments' => array('administer access'),
38 $items[MODULE_ID] = array(
39 'title' => MODULE_ID . ' #tuksi02',
40 'page callback' => 'nevergone_1_page',
41 'access arguments' => array('access content'),
47 /* modul admin oldalán megjelenő form */
48 function nevergone_1_settings_form() {
49 $form['widget'] = array( /* beviteli mező */
50 '#type' => 'textfield',
51 '#title' => MODULE_ID . ' widget felhasználó neve',
52 '#default_value' => variable_get('nevergone_1_widget', WIDGET_USER),
53 '#description' => check_plain(str_replace(WIDGET_USER, variable_get('nevergone_1_widget', ''), WIDGET)),
55 $form['submit'] = array( /* "Save configuration" gomb */
57 '#value' => t('Save configuration'),
59 $form['reset'] = array( /* "Reset to defaults" gomb */
61 '#value' => t('Reset to defaults'),
62 '#submit' => array('nevergone_1_settings_form_clear'), /* reset form */
68 /* modul admin form törlése */
69 function nevergone_1_settings_form_clear($form, &$form_state) {
70 $form_state['rebuild'] = TRUE; /* újra kell építeni a formot */
71 $form_state['values']['widget'] = WIDGET_USER; /* eredeti érték */
72 variable_set('nevergone_1_widget', WIDGET_USER);
73 drupal_flush_all_caches(); /* gyorstár ürítése */
77 /* modul admin form ellenőrzése: a felhasználónév nem lehet üres */
78 function nevergone_1_settings_form_validate($form, &$form_state) {
79 if (empty ($form_state['values']['widget'])) {
80 form_error($form['widget'], 'Nem lehet üres a felhasználónév!');
85 /* modul admin form elküldése: felhasználónév mentése */
86 function nevergone_1_settings_form_submit($form, &$form_state) {
87 variable_set('nevergone_1_widget', $form_state['values']['widget']);
88 drupal_flush_all_caches(); /* gyorstár ürítése */
92 /* hook_theme implementáció */
93 function nevergone_1_theme($existing, $type, $theme, $path) {
95 'nevergone_1_page' => array( /* sminkeléshez használt függvény neve: theme_nevergone_1_page(), és az átadott paraméterek */
96 'arguments' => array('widget' => NULL),
98 'nevergone_1_block' => array(
99 'arguments' => array('widget' => NULL),
105 /* oldal sminkeléséhez használt függvény */
106 function theme_nevergone_1_page($widget) {
111 /* modul oldalának megjelenítése */
112 function nevergone_1_page() {
113 $widget = variable_get('nevergone_1_widget', '');
114 $widget = str_replace(WIDGET_USER, check_plain(variable_get('nevergone_1_widget', '')), WIDGET);
115 return theme('nevergone_1_page', $widget); /* sminkeléssel generált eredmény */
119 /* hook_block() implementáció */
120 function nevergone_1_block($op = 'list', $delta = 0, $edit = array()) {
122 case 'list': /* blokkok listája */
123 $blocks['0'] = array(
124 'info' => 'Blokktégla (nevergone_1)',
128 case 'view': /* blokk tartalma */
130 /* nézzük a delta-t, hátha egyszer több blokk lesz a modulban */
133 $widget = variable_get('nevergone_1_widget', '');
134 $widget = str_replace(WIDGET_USER, check_plain(variable_get('nevergone_1_widget', '')), WIDGET);
135 $blocks['subject'] = MODULE_ID;
136 $blocks['content'] = theme('nevergone_1_block', $widget);
145 /* blokk sminkeléséhez használt függvény */
146 function theme_nevergone_1_block($widget) {
151 /* hook_filter() implementáció */
152 function nevergone_1_filter($op, $delta = 0, $format = -1, $text = '', $cache_id = 0) {
156 '0' => 'nevergone_1 filter',
164 $widget_code = str_replace(WIDGET_USER, check_plain(variable_get('nevergone_1_widget', '')), WIDGET);
165 return str_replace('[widget]', $widget_code, $text);
168 return TRUE; /* cache kikapcsolása */
174 /* hook_filter_tips() implementáció */
175 function nevergone_1_filter_tips($delta, $format, $long = FALSE) {
178 return 'nevergone_1 példafilter leírása';