'bicikli_hungary/data', 'callback' => 'bicikli_core_data', 'access' => user_access('access content'), 'type' => MENU_CALLBACK, ); $items[] = array( 'path' => 'biciklik', 'callback' => 'bicikli_core_lista', 'title' => 'Biciklik', 'access' => user_access('access content') ); $items[] = array( 'path' => 'alkatreszek', 'callback' => 'bicikli_alkatresz_lista', 'title' => 'Alkatrészek', 'access' => user_access('bicikli alkatresz bongeszo'), ); $items[] = array( 'path' => 'sajat-biciklik', 'callback' => 'bicikli_core_sajat_lista', 'title' => 'Saját biciklik', 'access' => user_access('access content') ); $items[] = array( 'path' => 'bicikli/szuro-sorrend', 'callback' => 'drupal_get_form', 'callback arguments' => array('bicikli_core_szuro_sorrend'), 'title' => 'Szűrő sorrend', 'access' => user_access('bicikli admin') ); $items[] = array( 'path' => 'bicikli/szuro-advanced', 'callback' => 'drupal_get_form', 'callback arguments' => array('bicikli_core_szuro_advanced'), 'title' => 'Szűrő avanced', 'access' => user_access('bicikli admin') ); $items[] = array( 'path' => 'admin/content/bicikli_alkatresz', 'description' => 'itt lehet megmondani, hogy mely tartalom típusok alkatrészek', 'callback' => 'drupal_get_form', 'callback arguments' => array('bicikli_alkatresz_admin'), 'title' => 'Bicikli alkatrészek', 'access' => user_access('bicikli admin') ); return $items; } function bicikli_core_sajat_lista($uid = 0){ global $user; if($uid ==0){ $uid = $user->uid; } $header = array( 'Bicikli', 'Ár', 'Tevékenységek', ); $res = db_query("SELECT n.nid, n.title, bc.ar FROM {node} n INNER JOIN {bicikli_core} bc ON n.nid=bc.nid WHERE n.uid=%d ORDER BY n.created",$uid); $lines = array(); while($row = db_fetch_object($res)){ $lines[$row->nid][] = l($row->title,'node/'.$row->nid); $lines[$row->nid][] = theme('bicikli_ar',$row->ar); $lines[$row->nid][] = l('Törlés', 'node/'. $row->nid .'/delete') .', '. l('Szerkesztés', 'node/'. $row->nid .'/edit'); } return theme('table',$header,$lines); } function theme_bicikli_ar($ar){ return number_format($ar,0,',',' ') .' Ft'; } function bicikli_core_lista($id = 0,$data = array()){ $output = ''; //form megjelenítése a szűrőkkel $output .= drupal_get_form('bicikli_core_szuro'); if(arg(1) == 'minden bicikli'){ $output .= '
Mivel nem választottál ki biciklit ezért megmutatjuk az összeset!
'; } //lekérés összrakása $where = bicikli_core_get_where(); $sql = "SELECT DISTINCT(n.nid) FROM {node} n LEFT JOIN {bicikli_core} bc ON n.nid=bc.nid".$where; //drupal_set_message('
'. print_r($sql,true) .'
'); //drupal_set_message('
'. print_r(preg_replace('/(DISTINCT\\(.*?\\))/','COUNT(\\1)',$sql),true) .'
'); //lista megjelenítése $res = pager_query($sql,100,0,preg_replace('/(DISTINCT\\(.*?\\))/','COUNT(\\1)',$sql)); $egyse = true; while($row = db_fetch_object($res)){ $egyse = false; $node= node_load($row->nid); if(isset($node->node_images) && is_array($node->node_images) && sizeof($node->node_images)>0){ $img = array_shift($node->node_images); $node->first_image = $img->thumbpath; } // $output .= theme('node',$node,true); } if($egyse && arg(1) != ''){ $output .= '
A keresésnek megfelelő bicikli nincs az adatbázisunkban.
'; } $output .= theme('pager'); return $output; } function theme_bicikli($node){ $output .='
'; if(isset($node->first_image)){ $output .= l('','node/'.$node->nid, array(), NULL, NULL, FALSE, true); } $output .= '

'. l($node->title,'node/'.$node->nid) .'

'; $output .= '
'. $node->body .'
'; $output .= '
'. $node->extrak .'
'; $output .= '
'; //$output .='
'. print_r($node,true) .'
'; return $output; } function theme_bicikli_core_szuro($form){ /* $output .= << .szuro_valaszto .form-item{ width: 150px; float:left; margin: 0; } .szuro_valaszto .form-item select{ width: 140px; float:left; } .szuro_extrak .form-item .form-item{ width: 100px; float:left; margin: 0; } div.szuro_extrak{ clear:both; } div.szuro_valaszto{ clear:both; } div.szuro_valaszto fieldset{ clear:both; } div.bicikli img{ float:left; border: 1px solid #999; margin: 0 5px 5px 0; padding: 4px; backgorund-color: #ccc; } div.bicikli div.extrak{ clear:both; } END; */ $alja = '
'. drupal_render($form['Extrak']) .'
'; $alja .= drupal_render($form['submit']); $output .= '
'. drupal_render($form) .'
'; return $output . $alja; } function bicikli_core_get_where(){ $data = bicikli_core_parse_path(); $taxonomy = bicikli_core_get_term(); $vocabulary = bicikli_core_get_voc(); /* { $joins = ''; $wheres = ''; foreach ($descendant_tids as $index => $tids) { $joins .= ' INNER JOIN {term_node} tn'. $index .' ON n.nid = tn'. $index .'.nid'; $wheres .= ' AND tn'. $index .'.tid IN ('. implode(',', $tids) .')'; } $sql = 'SELECT DISTINCT(n.nid), n.sticky, n.title, n.created FROM {node} n '. $joins .' WHERE n.status = 1 '. $wheres .' ORDER BY '. $order; drupal_set_message($sql); $sql_count = 'SELECT COUNT(DISTINCT(n.nid)) FROM {node} n '. $joins .' WHERE n.status = 1 '. $wheres; } tehát az ar megye varos marad, a többit viszont így kell belerakni. Egyelőre, mert el kell gondolkodni az egytáblás megoldáson, hogy gyorslegyen a select. */ $where = array(); $joins = ' '; $where[] = 'n.status=1'; $where[] = "n.type='bicikli'"; $order = ' ORDER BY n.promote DESC,n.sticky DESC, n.created DESC'; $index = 0; $alapi = sizeof($where); foreach($data as $key => $value){ switch($key){ case 'sorrend' : switch($value[0]){ case 'ar' : $order.= ',bc.ar ASC'; break; case 'ard' : $order.= ',bc.ar DESC'; break; case 'ido' : $order.= ',n.created ASC'; break; case 'idod' : $order.= ',n.created DESC'; break; } break; case 'ar' : list($alja,$teteje) = explode('-',$value[0]); if(is_numeric($alja) && is_numeric($teteje) && (int)$alja < (int)$teteje){ $where[] = 'bc.ar>='. (int)$alja .' and bc.ar<='.(int)$teteje; } if(is_numeric($alja) && $teteje === ''){ $where[] = 'bc.ar>='.(int)$alja; } break; case 'megye' : if(is_numeric($value[0])){ $where[] = 'bc.megye='.(int)$value[0]; } //drupal_set_message(print_r($where,true)); break; case 'varos' : if(is_numeric($value[0])){ $where[] = 'bc.varos='.(int)$value[0]; } break; default : if(is_array($value)){ $vid = $vocabulary['name'][$key]; foreach($value as $v){ if(isset($taxonomy['name'][$v][$vid])){ $joins .= ' INNER JOIN {term_node} tn'. $index .' ON n.nid = tn'. $index .'.nid'; $where[] = 'tn'. $index .'.tid='. (int)$taxonomy['name'][$v][$vid]; $index++; //$wheres .= 'tn'. $index .'.tid IN ('. implode(',', $tids) .')'; } } } break; } } /* if(sizeof($where) == $alapi){ $where[] = 'n.promote=1'; }*/ if(arg(1) ==''){ $where[] = 'n.promote=1'; } if(sizeof($where)>0){ return $joins.' WHERE '. join(' and ',$where) . $order; } return ''; } function bicikli_core_szuro(){ // drupal_set_message('
'. print_r(taxonomy_get_vocabularies('bicikli'),true) .'
'); $data = bicikli_core_parse_path(); $form['ar'] = array( '#type' => 'select', '#options' => bicikli_core_get_ar(), '#default_value' => isset($data['ar'])?$data['ar'][0]:bicikli_ALL, '#weight' => variable_get('bicikli_core_ar',0), '#title' => 'Ár', ); $form['megye'] = array( '#type' => 'select', '#title' => 'Megye', '#default_value' => isset($data['megye'])?$data['megye'][0]:bicikli_ALL, '#weight' => variable_get('bicikli_core_megye',0), '#options' => bicikli_get_megye(), ); //ezt kell visszatenni, hogy legyen a keresésnél város. /* $form['varos'] = array( '#type' => 'select', '#title' => 'Város', '#default_value' => isset($data['varos'])?$data['varos'][0]:bicikli_ALL, '#weight' => variable_get('bicikli_core_varos',0), '#options' => bicikli_get_varos(isset($data['megye'])?$data['megye'][0]:bicikli_ALL), );*/ $form['advanced'] = array( '#type' => 'fieldset', '#title' => t('Advanced search'), '#weight' => 99, '#collapsible' => TRUE, '#collapsed' => TRUE, ); $voc = taxonomy_get_vocabularies('bicikli'); $m = 0; foreach($voc as $vid => $vocab){ $name = bicikli_core_get_name($vocab->name); if($vocab->multiple != 1){ $element = array( '#type' => 'select', '#options' => bicikli_core_get_term_options($vid), '#default_value' => isset($data[$name])?$data[$name][0]:bicikli_ALL, '#title' => $vocab->name, '#weight' => $vocab->weight, ); if($vid == variable_get('bicikli_core_advanced', 0)){ $m = $vocab->weight; } if($vocab->weight < $m){ $form[$name] = $element; }else{ $form['advanced'][$name] = $element; } }else{ $form[$name] = array( '#type' => 'checkboxes', '#options' => bicikli_core_get_term_options($vid,true), '#default_value' => isset($data[$name])?$data[$name]:array(), '#title' => $vocab->name, '#weight' => $vocab->weight, ); } } $form['minden'] = array( '#type' => 'hidden', '#value' => 'bicikli', '#weight' => -100, ); $form['submit'] = array( '#type' => 'submit', '#value' => 'Keres', '#weight' => 100, ); return $form; } function bicikli_core_szuro_sorrend(){ $form['ar'] = array( '#type' => 'weight', '#default_value' => variable_get('bicikli_core_ar',0), '#weight' => variable_get('bicikli_core_ar',0), '#title' => 'Ár', ); $form['megye'] = array( '#type' => 'weight', '#default_value' => variable_get('bicikli_core_megye',0), '#weight' => variable_get('bicikli_core_megye',0), '#title' => 'Megye', ); $form['varos'] = array( '#type' => 'weight', '#default_value' => variable_get('bicikli_core_varos',0), '#weight' => variable_get('bicikli_core_varos',0), '#title' => 'Város', ); $voc = taxonomy_get_vocabularies('bicikli'); foreach($voc as $vid => $vocab){ $name = bicikli_core_get_name($vocab->name); $form[$name] = array( '#type' => 'weight', '#default_value' => $vocab->weight, '#title' => $vocab->name, '#weight' => $vocab->weight, ); } $form['submit'] = array( '#type' => 'submit', '#value' => 'Ment', '#weight' => 100, ); return $form; } function bicikli_core_szuro_advanced(){ $max = variable_get('bicikli_core_ar',0); if(variable_get('bicikli_core_megye',0) > $max){$max = variable_get('bicikli_core_megye',0);} if(variable_get('bicikli_core_varos',0) > $max){$max = variable_get('bicikli_core_varos',0);} $voc = taxonomy_get_vocabularies('bicikli'); $vr = array(); foreach($voc as $vid => $vocab){ if ($vocab->multiple == 0){ if($vocab->weight>$max){ $vr[$vid] = $vocab->name; } } } $vr[0] = 'Mindegyik látszik'; $form['bicikli_core_advanced'] = array( '#type' => 'radios', '#title' => t('Advanced'), '#default_value' => variable_get('bicikli_core_advanced', 0), '#options' => $vr, ); $form['submit'] = array( '#type' => 'submit', '#value' => 'Ment', '#weight' => 100, ); return $form; } function bicikli_core_szuro_advanced_submit($id,$form){ //drupal_set_message('
'. print_r($form,true) .'
'); variable_set('bicikli_core_advanced', $form['bicikli_core_advanced']); } function bicikli_core_szuro_sorrend_submit($id,$form){ //drupal_set_message('
'.print_r(  $vocabulary = bicikli_core_get_voc(),true).'
'); $vocabulary = bicikli_core_get_voc(); foreach($form as $name => $value){ //kiszedjük a felesleget if(!in_array($name,array('op','submit','form_id','form_token'))){ if(isset($vocabulary['name'][$name])){ db_query('UPDATE {vocabulary} SET weight=%d WHERE vid=%d',$value,$vocabulary['name'][$name]); }else if($name == 'ar' ||$name == 'varos' ||$name == 'megye'){ variable_set('bicikli_core_'.$name,$value); } } } } function bicikli_core_get_term_options($vid,$multiple = false){ $res = db_query('SELECT * FROM {term_data} WHERE vid = %d ORDER BY weight',$vid); if(!$multiple){ $ret[bicikli_ALL] = bicikli_ALL; } while($row = db_fetch_array($res)){ $ret[bicikli_core_get_name($row['name'])] = $row['name']; } return $ret; } function bicikli_core_parse_path(){ $ret = array(); $i=1; while($arg = arg($i++)){ $part = explode(' ',$arg); $name = array_shift($part); while(sizeof($part)>0){ if(trim($part[0]) !== ''){ $ret[$name][] = array_shift($part); }else{ array_shift($part); } } } return $ret; } function bicikli_core_get_ar(){ //visszaadja a z ár legördülő listát. return array( bicikli_ALL => bicikli_ALL, '0-5000'=>'0-5000', '5000-10000'=>'5000-10000', '10000-20000'=>'10000-20000', '20000-50000'=>'20000-50000', '50000-100000'=>'50000-100000', '100000-'=>'100000-', ); } function bicikli_core_szuro_submit($id,$data){ //drupal_set_message('
'. print_r(parse_ini_file(drupal_get_path('module','bicikli_core') .'/i18n.txt'),true) .'
'); //drupal_set_message('
'. print_r(taxonomy_get_vocabularies('bicikli'),true) .'
'); //drupal_set_message('
'. print_r(bicikli_core_get_term(),true) .'
'); //drupal_set_message('
'. print_r($data,true) .'
');return; $path='biciklik'; //biztos, ami biztos kiszedünk minden nem kellő karaktert. foreach($data as $name => $value){ //kiszedjük a felesleget if(!in_array($name,array('op','submit','form_id','form_token','minden'))){ if(is_array($value)){ //drupal_set_message('
'. print_r($value,true) .'
');return; $rv = array(); foreach($value as $v){ if($v != '0'){ $rv[] = bicikli_core_get_name($v); } } $value = join(' ',$rv); }else{ $value = bicikli_core_get_name($value); } $name = bicikli_core_get_name($name); if($value != bicikli_ALL && $value != ''){ $path.='/'. $name .' '. $value; } } } if(trim($path) == 'biciklik'){ $path .= '/minden bicikli'; } drupal_goto($path); } function bicikli_core_get_extra(){ $res = db_query("SELECT vid FROM {vocabulary} WHERE name='Extrák'"); $ret = db_fetch_object($res); return $ret->vid; } function bicikli_core_get_voc(){ $voc = taxonomy_get_vocabularies('bicikli'); $ret = array(); $ret['id'] = array(); $ret['name'] = array(); foreach ($voc as $id => $data){ $name = bicikli_core_get_name($data->name); $ret['id'][$id]=$name; $ret['name'][$name]=$id; } return $ret; } function bicikli_alkatresz_get_voc(){ $ret = array(); $ret['id'] = array(); $ret['name'] = array(); $alkatresz_tipusok = variable_get('bicikli_alkatresz_tipusok',array()); foreach($alkatresz_tipusok as $key => $val){ $voc = taxonomy_get_vocabularies($key); foreach ($voc as $id => $data){ $name = bicikli_core_get_name($data->name); $ret['id'][$id]=$name; $ret['name'][$name]=$id; } } return $ret; } function bicikli_core_get_term(){ $res = db_query('SELECT * FROM {term_data} ORDER BY tid'); $ret = array(); $ret['id'] = array(); $ret['name'] = array(); while($row = db_fetch_array($res)){ $name = bicikli_core_get_name($row['name']); $id = $row['tid']; $ret['id'][$id]=$name; $ret['name'][$name][$row['vid']] = $id; } return $ret; } function bicikli_core_get_name($name){ $csere = parse_ini_file(drupal_get_path('module','bicikli_core') .'/i18n.txt'); $name = strtr($name,$csere); $name = preg_replace('/[^a-zA-Z0-9-]+/','',$name); return $name; } function bicikli_core_data() { echo drupal_to_js(bicikli_get_varos((int)arg(2))); exit; } function bicikli_core_node_info() { return array( 'bicikli' => array( 'name' => 'Bicikli', 'module' => 'bicikli_core', 'description' => "Bicikli típus", 'has_title' => TRUE, 'title_label' => 'Megnevezés', 'has_body' => TRUE, 'body_label' => 'Leírás', ) ); } function bicikli_core_access($op, $node) { global $user; if ($op == 'create') { // Only users with permission to do so may create this node type. return user_access('create bicikli node'); } // Users who create a node may edit or delete it later, assuming they have the // necessary permissions. if ($op == 'update' || $op == 'delete') { if (user_access('edit own bicikli nodes') && ($user->uid == $node->uid)) { return TRUE; } } } /** * Implementation of hook_perm(). * * Since we are limiting the ability to create new nodes to certain users, * we need to define what those permissions are here. We also define a permission * to allow users to edit the nodes they created. */ function bicikli_core_perm() { return array('create bicikli node', 'edit own bicikli nodes','bicikli admin','bicikli alkatresz bongeszo'); } /** * Implementation of hook_form(). * * Now it's time to describe the form for collecting the information * specific to this node type. This hook requires us to return an array with * a sub array containing information for each element in the form. */ function bicikli_core_form(&$node) { // The site admin can decide if this node type has a title and body, and how // the fields should be labeled. We need to load these settings so we can // build the node form correctly. $type = node_get_types('type', $node); if ($type->has_title) { $form['title'] = array( '#type' => 'textfield', '#title' => check_plain($type->title_label), '#required' => TRUE, '#default_value' => $node->title, '#weight' => -5 ); } if ($type->has_body) { $form['body_filter']['body'] = array( '#type' => 'textarea', '#title' => check_plain($type->body_label), '#default_value' => $node->body, '#required' => ($type->min_word_count > 0), ); $form['body_filter']['format'] = filter_form($node->format); } // Now we define the form elements specific to our node type. $form['ar'] = array( '#type' => 'textfield', '#title' => 'Ár', '#required' => TRUE, '#default_value' => isset($node->ar) ? $node->ar : '', '#description' => 'Ár forintban. A mező csak egész számot tartalmazhat.', ); $form['megye'] = array( '#type' => 'select', '#title' => 'Megye', '#default_value' => isset($node->megye) ? $node->megye : 0, '#options' => bicikli_get_megye(), ); $form['varos'] = array( '#type' => 'select', '#title' => 'Város', '#default_value' => isset($node->varos) ? $node->varos : 0, '#options' => bicikli_get_varos(isset($_POST['megye'])?(int)$_POST['megye']:(isset($node->megye) ? $node->megye : 0)), ); return $form; } function bicikli_get_megye(){ static $megyek = false; if($megyek) {return $megyek;} $res = db_query("SELECT id, nev FROM {bicikli_hungary_telepulesek} WHERE megye=0 ORDER BY nev"); $megyek = array(); $megyek[bicikli_ALL] = bicikli_ALL; while($row = db_fetch_object($res)){ $megyek[$row->id] = $row->nev; } return $megyek; } function bicikli_get_varos($id = 0){ static $v = array(); if(isset($v[$id])) {return $v[$id];} if($id == 0){ $res = db_query("SELECT id, nev FROM {bicikli_hungary_telepulesek} WHERE megye<>0 && megye <>1 ORDER BY nev"); }else{ $res = db_query("SELECT id, nev FROM {bicikli_hungary_telepulesek} WHERE megye=%d ORDER BY nev",$id); } $varosok = array(); $varosok[bicikli_ALL] = bicikli_ALL; while($row = db_fetch_object($res)){ $varosok[$row->id] = $row->nev; } $v[$id] = $varosok; return $varosok; } function bicikli_core_validate(&$node) { if ($node->ar) { if (!preg_match('/^[0-9]+$/',$node->ar)) { form_set_error('ar', 'Az ár egész szám kell, hogy legyen!'); } } else { form_set_error('ar', 'Az árat meg kell adni!'); } } function bicikli_core_validate_alkatresz($form_id,$form) { if ($form['ar']) { if (!preg_match('/^[0-9]+$/',$form['ar'])) { form_set_error('ar', 'Az ár egész szám kell, hogy legyen!'); } } else { form_set_error('ar', 'Az árat meg kell adni!'); } } /** * Implementation of hook_insert(). * * As a new node is being inserted into the database, we need to do our own * database inserts. */ function bicikli_core_insert($node) { db_query("INSERT INTO {bicikli_core} (vid, nid, ar, megye, varos) VALUES (%d, %d, %d, %d, %d)", $node->vid, $node->nid, $node->ar, (int)$node->megye, (int)$node->varos); } /** * Implementation of hook_update(). * * As an existing node is being updated in the database, we need to do our own * database updates. */ function bicikli_core_update($node) { // if this is a new node or we're adding a new revision, if ($node->revision) { bicikli_core_insert($node); } else { db_query("UPDATE {bicikli_core} SET ar = %d, megye = %d, varos = %d WHERE vid = %d", $node->ar, (int)$node->megye, (int)$node->varos, $node->vid); } } /** * Implementation of hook_nodeapi(). * * When a node revision is deleted, we need to remove the corresponding record * from our table. The only way to handle revision deletion is by implementing * hook_nodeapi(). */ function bicikli_core_nodeapi(&$node, $op, $teaser, $page) { switch ($op) { case 'load': $vocabulary = bicikli_core_get_voc(); $e=array(); $to = array(); $e3 = array(); $esz = 0; $evid = bicikli_core_get_extra(); $taxonomy = taxonomy_node_get_terms($node->nid); foreach($taxonomy as $term){ $v = bicikli_core_get_name($vocabulary['id'][$term->vid]); $t = bicikli_core_get_name($term->name); $to[] = l($term->name,'sites/all/html/'. $v .'.html',array('rel'=>'clearbox(425,350,click)', 'title' => $term->name),NULL,$t); if($esz<3 && $term->vid != $evid){ $e3[] = $term->name; $esz ++; } if($term->vid == $evid){ //$e[] = l($term->name,'sites/all/html/'. $v .'.html',array('rel'=>'clearbox(425,350,click)', 'title' => $term->name),NULL,$t); // az extrakon nincs link $e[] = $term->name; } } $node->extrak = join(', ',$e); $node->alltaxonomy = join(', ',$to); $node->elsoharom = join(', ',$e3); $alkatresz_tipusok = variable_get('bicikli_alkatresz_tipusok',array()); if(in_array($node->type,$alkatresz_tipusok)){ $additions = db_fetch_array(db_query('SELECT ar, megye, varos FROM {bicikli_core} WHERE vid = %d', $node->vid)); $megyek = bicikli_get_megye(); $varosok = bicikli_get_varos($additions['megye']); $additions['megye_szoveg'] = $megyek[$additions['megye']]; $additions['varos_szoveg'] = $varosok[$additions['varos']]; return $additions; } break; case 'delete revision': // Notice that we're matching a single revision based on the node's vid. db_query('DELETE FROM {bicikli_core} WHERE vid = %d', $node->vid); break; case 'insert': case 'update': $alkatresz_tipusok = variable_get('bicikli_alkatresz_tipusok',array()); if(in_array($node->type,$alkatresz_tipusok)){ db_query('DELETE FROM {bicikli_core} WHERE nid = %d', $node->nid); db_query("INSERT INTO {bicikli_core} (vid, nid, ar, megye, varos) VALUES (%d, %d, %d, %d, %d)", $node->vid, $node->nid, $node->ar, (int)$node->megye, (int)$node->varos); } break; case 'delete': break; } } /** * Implementation of hook_delete(). * * When a node is deleted, we need to remove all related records from out table. */ function bicikli_core_delete($node) { // Notice that we're matching all revision, by using the node's nid. db_query('DELETE FROM {bicikli_core} WHERE nid = %d', $node->nid); } /** * Implementation of hook_load(). * * Now that we've defined how to manage the node data in the database, we * need to tell Drupal how to get the node back out. This hook is called * every time a node is loaded, and allows us to do some loading of our own. */ function bicikli_core_load($node) { $additions = db_fetch_object(db_query('SELECT ar, megye, varos FROM {bicikli_core} WHERE vid = %d', $node->vid)); $megyek = bicikli_get_megye(); $varosok = bicikli_get_varos($additions->megye); $additions->megye_szoveg = $megyek[$additions->megye]; $additions->varos_szoveg = $varosok[$additions->varos]; $voc = taxonomy_get_vocabularies('bicikli'); foreach($voc as $vid => $vocab){ if($vocab->multiple != 1){ $additions->vocabularys[$vocab->vid] = $vocab->name; } } return $additions; } /** * Implementation of hook_view(). * * This is a typical implementation that simply runs the node text through * the output filters. */ function bicikli_core_view($node, $teaser = FALSE, $page = FALSE) { $node = node_prepare($node, $teaser); /* ár, város, megye. $node->content['myfield'] = array( '#value' => theme('bicikli_core_order_info', $node), '#weight' => 1, ); */ return $node; } /** * Implementation of hook_theme(). * * This lets us tell Drupal about our theme functions and their arguments. */ function bicikli_core_theme() { /*return array( 'bicikli_core_order_info' => array( 'arguments' => array('node'), ), );*/ } function bicikli_core_get_taxonomy(){ /* $filter['ar'] = array( '#type' => 'options', '#options' => array( 0 => '0 - 1000', 1 => '1000 - 10 000', 2 => '10 000 - 100 000', 3 => '100 000 - ', ), );*/ $filter[''] = array( '#type' => 'tid', '#tid' => 0, ); $filter[''] = array( '#type' => 'tid', '#tid' => 0, ); $filter[''] = array( '#type' => 'tid', '#tid' => 0, ); } function bicikli_core_form_alter($form_id, &$form){ // a deltát felnöveljük 30-ra. //drupal_set_message('
'. print_r($form['#node']->ar,true) .'
'); // return; // _node_form drupal_set_message(substr($form_id,-10)); //drupal_set_message(substr($form_id,0,-10)); if(substr($form_id,-10) == '_node_form'){ $alkatresz_tipusok = variable_get('bicikli_alkatresz_tipusok',array()); if(in_array(substr($form_id,0,-10),$alkatresz_tipusok)){ //alkatrész típus, hozzáadjuk az árat, megyét, várost. $form['ar'] = array( '#type' => 'textfield', '#title' => 'Ár', '#required' => TRUE, '#default_value' => isset($form['#node']->ar) ? $form['#node']->ar : '', '#description' => 'Ár forintban. A mező csak egész számot tartalmazhat.', ); $form['megye'] = array( '#type' => 'select', '#title' => 'Megye', '#default_value' => isset($form['#node']->megye) ? $form['#node']->megye : 0, '#options' => bicikli_get_megye(), ); $form['varos'] = array( '#type' => 'select', '#title' => 'Város', '#default_value' => isset($form['#node']->varos) ? $form['#node']->varos : 0, '#options' => bicikli_get_varos(isset($_POST['megye'])?(int)$_POST['megye']:(isset($form['#node']->megye) ? $form['#node']->megye : 0)), ); $form['#validate'] = array('bicikli_core_validate_alkatresz' => array('ar')); } } foreach($form as $key => $input){ if(is_array($input) && isset($input['#type']) && $input['#type']=='weight' && $input['#delta'] < 10){ $form[$key]['#delta'] = 30; } } if(isset($form['taxonomy'][29])){ $form['taxonomy'][29]['#type'] = 'checkboxes'; $options = array(); if(is_array($form['taxonomy'][29]['#options'])){ foreach($form['taxonomy'][29]['#options'] as $akey => $value){ if(is_array($value->option)){ foreach($value->option as $key =>$val){ $options[$key] = $val; } } } } unset($form['taxonomy'][29]['#theme']); $form['taxonomy'][29]['#options'] = $options; } if($form_id == 'contact_mail_user'){ $bicaj = node_load((int)arg(3)); if($bicaj){ $form['subject']['#default_value'] = $bicaj->title; } } } function bicikli_alkatresz_admin(){ //drupal_set_message(print_r(taxonomy_get_vocabularies(),true)); $node_types = node_get_types(); $options = array(); foreach($node_types as $node_type){ $options[$node_type->type] = $node_type->name; } $form['#description'] = 'Állítsd be mely tartalom típusok alkatrészek'; $form['types'] = array( '#type' => 'checkboxes', '#title' => 'Tartalom típusok', '#options' => $options, '#description' => 'Állítsd be mely tartalom típusok alkatrészek', '#default_value' => variable_get('bicikli_alkatresz_tipusok',array()), ); $form['submit'] = array( '#type' => 'submit', '#value' => 'Mentés', ); return $form; } function bicikli_alkatresz_admin_submit($form_id,$form){ foreach($form['types'] as $key => $val){ if($key !== $val){unset($form['types'][$key]);} } variable_set('bicikli_alkatresz_tipusok',$form['types']); } function bicikli_alkatresz_lista(){ $output = ''; $output .= drupal_get_form('bicikli_alkatresz_kereso_form'); $terms = bicikli_core_get_term(); $vocabularys = bicikli_alkatresz_get_voc(); $where = array(); $values = array(); $fajta = $vocabularys['name'][arg(1)]; $tipus = $terms['name'][arg(2)][$fajta]; //drupal_set_message($tipus); if($tipus != 0){ $where [] = 'tn.tid=%d'; $values[] = $tipus; } $ar = arg(3); list($alja,$teteje) = explode('-',$ar); if(is_numeric($alja) && is_numeric($teteje) && (int)$alja < (int)$teteje){ $where[] = 'bc.ar>=%d and bc.ar<=%d'; $values[] = $alja; $values[] = $teteje; } if(is_numeric($alja) && $teteje === ''){ $where[] = 'bc.ar>=%d'; $values[] = $alja; } $megye = arg(4); if(is_numeric($megye)){ $where[] = 'bc.megye=%d'; $values[] = $megye; } if(count($where) != 0){ $sql = "SELECT bc.nid FROM {node} as n JOIN {bicikli_core} bc ON n.nid=bc.nid JOIN {term_node} tn ON bc.nid = tn.nid WHERE ". join(' AND ',$where) ." ORDER BY n.promote DESC,n.sticky DESC, n.created DESC"; //drupal_set_message($sql); $res = pager_query($sql,100,0,NULL,$values); $egyse = true; while($row = db_fetch_object($res)){ $egyse = false; $node= node_load($row->nid); if(isset($node->node_images) && is_array($node->node_images) && sizeof($node->node_images)>0){ $img = array_shift($node->node_images); $node->first_image = $img->thumbpath; } $output .= theme('node',$node,true); } if($egyse && arg(1) != ''){ $output .= '
A keresésnek megfelelő alkatrész nincs az adatbázisunkban.
'; } $output .= theme('pager'); } return $output; } function bicikli_alkatresz_kereso_form(){ drupal_add_js(drupal_get_path('module', 'bicikli_core') .'/bicikli_alkatresz.js'); $terms = bicikli_core_get_term(); $vocabularys = bicikli_alkatresz_get_voc(); $fajta = $vocabularys['name'][arg(1)]; $tipus = $terms['name'][arg(2)][$fajta]; $alkatresz_tipusok = variable_get('bicikli_alkatresz_tipusok',array()); $voc = taxonomy_get_vocabularies(); $termr = array(); foreach($voc as $v){ if(count(array_intersect($alkatresz_tipusok,$v->nodes))>0){ $res = db_query("SELECT * FROM {term_data} WHERE vid=%d",$v->vid); $tids = array(0 => '--Válassz!--'); while($row = db_fetch_array($res)){ $tids[$row['tid']] = $row['name']; } $form['term_'.$v->vid] = array( '#type' => 'select', '#title' => $v->name, '#options' => $tids, '#default_value' => $tipus, ); $termr[$v->vid] = $v->name; } } $form['terms'] = array( '#type' => 'select', '#title' => 'Alkatrész fajta', '#options' => $termr, '#default_value' => $fajta, ); $form['ar'] = array( '#type' => 'select', '#options' => bicikli_core_get_ar(), '#default_value' => arg(3), '#weight' => variable_get('bicikli_core_ar',0), '#title' => 'Ár', ); $form['megye'] = array( '#type' => 'select', '#title' => 'Megye', '#default_value' => arg(4), '#weight' => variable_get('bicikli_core_megye',0), '#options' => bicikli_get_megye(), ); $form['submit'] = array( '#type' => 'submit', '#value' => 'Keresés', ); return $form; } function bicikli_alkatresz_kereso_form_validate($form_id,$form){ // drupal_set_message('
'. print_r($form,true) .'
'); if(!is_numeric($form['terms']) || $form['terms'] == 0){ form_set_error('terms','Válasszon alkartrész fajtát!'); }else{ if($form['term_'. $form['terms']] == 0){ form_set_error('term_'. $form['terms'],'Válasszon alkartrész típust!'); } } } function bicikli_alkatresz_kereso_form_submit($form_id,$form){ $terms = bicikli_core_get_term(); $vocabularys = bicikli_alkatresz_get_voc(); $path[] = 'alkatreszek'; $path[] = $vocabularys['id'][$form['terms']]; $path[] = $terms['id'][$form['term_'. $form['terms']]]; $path[] = $form['ar']; $path[] = $form['megye']; drupal_goto(join('/',$path)); } Ultra Slim Car Flip Down Monitor , Dual IR TFT LED Overhead Monitors | Kerékpárpiac - Használt és új kerékpárok

Ultra Slim Car Flip Down Monitor , Dual IR TFT LED Overhead Monitors

Emailcím: 3130500545@qq.com

Ultra Slim Car Flip Down Monitor , Dual IR TFT LED Overhead Monitors

11.6 Inch Ultra Slim Dual IR TFT LED Overhead Monitors / Car Flip Down Monitor With OSD Menu
1)11.6" digital panel,high resolution(Roof Mount Monitor)
2)Semiautomatic fall down model,the monitor can come down smoothly
3)Super slim design
4)System:PAL/NTSC
5)Display Mode: 16:9 wide view angle
6)With OSD menu,Multi-language support
7)Dual IR transmitter(optional)
8)With two way Video Input
9)Built-in LED Dome Light
10)Full function with remote control
11)Power Supply:DC 12V
12)3 colors available:Beige,Black,Grey

Wide-Screen 11.6-inch Monitor Is Like Having a Mini Home Theater in Your Backseat
The monitor features a large 11.6-inch TFT-LCD flip-down monitor,and a brilliant 14400 x 900 screen resolution. Designed with the latest media technology in mind, you can enjoy a wide array of entertainment on its high-resolution monitor from almost any source!

Find out how our RCA connectors work

With DVD-R/RW, CD-R/RW, and MP3 playback, you can watch movies and listen to music recorded right off your computer -- and with DivX support, you can enjoy your recorded movies in one of the highest-quality video formats available.

SD Card/USB slot lets you play movies and music right from your computer SD Card and USB Drive Support
The monitor supports SD cards and USB flash drives, so you can quickly load music and movies from your computer or other devices onto your card and play them back with ease. Just insert the card into the SD slot and you’ll have access to a wealth of entertainment options, all on one tiny disk.

More Ways to Listen to Your Player

FM Transmitter

You can use your car’s audio system with the player without the hassle of installation. With the built-in FM transmitter, all you need to do is tune to a radio station, and your entire vehicle can enjoy what’s being played.

Car Headrest DVD player
IR Transmitter

The PLRD175IF also has a built-in IR transmitter, which lets you watch movies with IR-compatible wireless headphones -- so everyone can enjoy the ride in peace and quiet.

Multiple RCA Connectors Let You Create a Mobile Entertainment System
The monitor comes with two video inputs, one set of stereo audio inputs, and a video and stereo output. The extra video input cable lets you use your in-dash DVD player to play movies through the monitor, so the entire vehicle can watch the same movie, while audio is played through the vehicle's speakers. You can also connect a videogame console, iPod, or Blu-ray Player -- anything that uses composite video -- to the player at the same time. You can also directly connect your player to the car’s audio equipment using the audio output cables, and the video output cable lets you hook up an extra monitor to the player.

And More!

Built-in Dome Lights

Whether you’re travelling through a dark tunnel or on the road at night, the PLRD175IF's powerful dome lights help you find and load movies easily with just a click of the button.

Anti-Skip Mechanism

The monitor also features anti-skip technology, helping to ensure your movie plays smoothly even on the roughest roads.

Last Position Memory

With last position memory, you don’t need to scroll through the entire movie to locate the last scene you were watching. Simply turn on the monitor, and you’ll be returned to where you last left off.

Product Description

This roof-mount TFT LCD monitor has everything you need to keep the back seat occupied The 11.6" widescreen monitor is brilliant, boasting a 500:1 contrast ratio and 1440 x 900 resolution. To watch a DVD, simply insert it in the slot. This unit can play DVDs, CD, CD-R, MP3 CD and SD cards, and the RCA inputs let you attach another device, like an iPod or a video game console. It’s equipped with a built in FM Transmitter for crystal-clear sound through your existing FM Stereo, or use wireless IR headphones. The anti-skip mechanism helps you through those bumpy trips, and last position memory lets you pick up right where you left off. Control using the front push button controls or the fully functional wireless remote control. The overhead console has twin dome LED lights for needed illumination. Includes mounting hardware and installation instructions.

CARAVAN is our registered brand in China and other countries. The brand consists of three parts: CAR+AV+AN.It indicates that this is an audio/video system in car. We are a leading manufacturer for IN CAR ENTERTAINEMNT products in China. CARAVAN is a fashion, technology leading brand for younger in the world.

Vissza a lap tetejére