Changeset 151


Ignore:
Timestamp:
03/08/2006 10:51:16 PM (6 years ago)
Author:
Winner
Message:

Add: Services support.
Bug fix: Extra field displaying error on registration page.

Location:
trunk
Files:
15 added
13 edited

Legend:

Unmodified
Added
Removed
  • trunk/globals/functions.php

    r145 r151  
    365365        } 
    366366} 
     367 
     368function url_fix ($url, $default_prefix="http://") { 
     369        // Windows shares (samba) check 
     370        if (substr(stripslashes($url), 0, 2) == '\\\\') { 
     371                return 'file://'.str_replace('\\', '/', substr(stripslashes($url), 2)); 
     372        } 
     373        // Insert default prefix 
     374        if (strpos($url, '://') === FALSE) { 
     375                return $default_prefix.$url; 
     376        } 
     377} 
     378 
    367379?> 
  • trunk/globals/language/english.php

    r145 r151  
    7373        'dns_zones_search' => "Search for DNS zones", 
    7474        'dns_zones_found' => "DNS zones found", 
     75         
     76        'all_services' => "Network services", 
     77        'active_services' => "Active services", 
     78        'services_search' => "Search services", 
     79        'services_found' => "Services found", 
     80        'services_categories' => "Services categories", 
     81        'services_categories_add' => "Add service category", 
     82        'services_categories_edit' => "Edit service category", 
     83        'services_edit' => "Edit service", 
     84        'services_add' => "Add service", 
     85        'services' => "Services", 
     86         
    7587        'user_add' => "New user", 
    7688        'user_edit' => "User profile", 
     
    297309                'ip_addresses__info' => 'Info', 
    298310 
     311                'services__title' => 'Category', 
     312                'services__protocol' => 'Protocol', 
     313                'services__protocol-tcp' => 'TCP', 
     314                'services__protocol-udp' => 'UDP', 
     315                'services__port' => 'Port', 
     316 
     317                'nodes_services__node_id' => 'Node', 
     318                'nodes_services__service_id' => 'Category', 
     319                'nodes_services__date_in' => 'Added', 
     320                'nodes_services__ip_id' => 'IP Address', 
     321                'nodes_services__url' => 'URL', 
     322                'nodes_services__status' => 'Status', 
     323                'nodes_services__status-active' => 'Active', 
     324                'nodes_services__status-inactive' => 'Inactive', 
     325                'nodes_services__info' => 'Info', 
     326                'nodes_services__protocol' => 'Protocol', 
     327                'nodes_services__protocol-tcp' => 'TCP', 
     328                'nodes_services__protocol-udp' => 'UDP', 
     329                'nodes_services__port' => 'Port', 
     330                 
    299331                'photos__date_in' => 'Date', 
    300332                'photos__view_point' => 'Aspect', 
     
    523555                        'body' => 'In this page you can search for DNS zones of the network by filling in the corresponding fields. The results are displayed in the follwing table. Furthermore, you cat choose a node for viewing.' 
    524556                ), 
     557                 
     558                'services' => array( 
     559                        'title' => 'Services', 
     560                        'body' => 'In this page you can search for network services by filling in the corresponding fields. The results are displayed in the follwing table. Furthermore, you cat choose a service or a node for viewing.' 
     561                ), 
     562                 
    525563                'mynodes_add' => array( 
    526564                        'title' => 'Add node', 
     
    579617                        'body' => 'In this page you can add or edit an IP address for your node. The \'Hostname\' field describes the device that the corresponding IP address belongs to and must be the same for all the IP addresses of that device.' 
    580618                ), 
     619                 
     620                'mynodes_services_add' => array( 
     621                        'title' => 'Add Service', 
     622                        'body' => 'In this page you can add a service of your node. The IP Address field should contain the IP address that the service is listening at. The URL field should contain a link to the service or a link to a page about the service. The Protocol and Port should contain the protocol (ie. tcp,udp) and the port that the service uses.' 
     623                ), 
     624                'mynodes_services_edit' => array( 
     625                        'title' => 'Edit Service', 
     626                        'body' => 'In this page you can edit a service of your node. The IP Address field contains all the IP addresses that you have commit and should contain the IP address that the service is listening at. The URL field should contain a link to the service or a link to a page about the service. The Protocol and Port should contain the protocol (ie. tcp,udp) and the port that the service uses.' 
     627                ), 
     628                'admin_services' => array( 
     629                        'title' => 'Services Administration', 
     630                        'body' => 'In this page you can add, edit or delete a Services Category. From the <<Edit Services>> link you can see all network services and edit them.' 
     631                ), 
     632                 
    581633                'nodes_search' => array( 
    582634                        'title' => 'Network nodes', 
  • trunk/globals/language/greek.php

    r145 r151  
    8585        'dns_zones_found' => "ΖώΜες DNS ποϠ
    8686 Î²ÏÎ­ÎžÎ·ÎºÎ±Îœ", 
     87 
     88        'all_services' => "Υπηρεσίες ΎικτύοϠ
     89", 
     90        'active_services' => "ΕΜεργές Ï 
     91πηρεσίες", 
     92        'services_search' => "ΑΜαζήτηση Ï 
     93πηρεσιώΜ", 
     94        'services_found' => "Υπηρεσίες ποϠ
     95 Î²ÏÎ­ÎžÎ·ÎºÎ±Îœ", 
     96        'services_edit' => "ΕπεΟεργασία Ï 
     97πηρεσίας", 
     98        'services_add' => "ΠροσΞήκη Ï 
     99πηρεσίας", 
     100        'services' => "Υπηρεσίες", 
     101        'services_categories' => "Κατηγορίες Ï 
     102πηρεσίωΜ", 
     103        'services_categories_add' => "ΠροσΞήκη κατηγορίας Ï 
     104πηρεσίωΜ", 
     105        'services_categories_edit' => "ΕπεΟεργασία κατηγορίας Ï 
     106πηρεσίωΜ", 
     107 
    87108        'user_add' => "Εγγραφή ΜέοϠ
    88109 Ï‡ÏÎ®ÏƒÏ„η", 
     
    373394                'ip_addresses__always_on-N' => 'ΟΧΙ', 
    374395                'ip_addresses__info' => 'Πληροφορίες', 
    375  
     396         
     397                'services__title' => 'Κατηγορία', 
     398                'services__protocol' => 'Πρωτόκολλο', 
     399                'services__protocol-tcp' => 'TCP', 
     400                'services__protocol-udp' => 'UDP', 
     401                'services__port' => 'Πόρτα', 
     402 
     403                'nodes_services__node_id' => 'ΚόΌβος', 
     404                'nodes_services__service_id' => 'Κατηγορία', 
     405                'nodes_services__date_in' => 'ΠροστέΞηκε', 
     406                'nodes_services__ip_id' => 'ΔιεύΞϠ
     407Μση IP', 
     408                'nodes_services__url' => 'URL', 
     409                'nodes_services__status' => 'Κατάσταση', 
     410                'nodes_services__status-active' => 'ΕΜεργή', 
     411                'nodes_services__status-inactive' => 'ΑΜεΜεργή', 
     412                'nodes_services__info' => 'Πληροφορίες', 
     413                'nodes_services__protocol' => 'Πρωτόκολλο', 
     414                'nodes_services__protocol-tcp' => 'TCP', 
     415                'nodes_services__protocol-udp' => 'UDP', 
     416                'nodes_services__port' => 'Πόρτα', 
     417                 
    376418                'photos__date_in' => 'ΗΌεροΌηΜία', 
    377419                'photos__view_point' => 'ΚατεύΞϠ
     
    727769.' 
    728770                ), 
     771                 
     772                'services' => array( 
     773                        'title' => 'Υπηρεσίες', 
     774                        'body' => 'Στη σελίΎα αϠ
     775τή Όπορείτε Μα αΜαζητήσετε Ï 
     776πηρεσίες τοϠ
     777 ÎŽÎ¹ÎºÏ„ύοϠ
     778, Όε βάση τα πεΎία ποϠ
     779 Ï€ÏÎ¿ÏƒÏ†Î­ÏÎ¿ÎœÏ„αι. ΀α αποτελέσΌατα εΌφαΜίζοΜται στοΜ παρακάτω πίΜακα. Επίσης, Όπορείτε Μα ΌεταφερΞείτε σε κάποια Ï 
     780πηρεσία (αΜ προσφέρεται URL) ή Μα επιλέΟετε κάποιοΜ κόΌβο για προβολή τωΜ στοιχείωΜ τοϠ
     781.' 
     782                ), 
     783                 
    729784                'mynodes_add' => array( 
    730785                        'title' => 'ΠροσΞήκη κόΌβοϠ
     
    862917 ÎŒÎ·Ï‡Î±ÎœÎ®ÎŒÎ±Ï„ος.' 
    863918                ), 
     919                 
     920                'mynodes_services_add' => array( 
     921                        'title' => 'ΠροσΞήκη Ï 
     922πηρεσίας', 
     923                        'body' => 'Στη σελίΎα αϠ
     924τή Όπορείτε Μα προσΞέσετε Όία Ï 
     925πηρεσία τοϠ
     926 ÎºÏŒÎŒÎ²Î¿Ï 
     927 ÏƒÎ±Ï‚. ΀ο πεΎίο ΔιεύΞϠ
     928Μση IP περιέχει όλες τις ΎιεϠ
     929ΞύΜσεις ποϠ
     930 Î­Ï‡ÎµÏ„ε Ύηλώσει και πρέπει Μα καΞορίζει τηΜ IP στηΜ οποία τρέχει (ακούει) η Ï 
     931πηρεσία. ΀ο πεΎίο URL, πρέπει Μα περιέχει το link για τηΜ Ï 
     932πηρεσία ή το link για κάποια σελίΎα ποϠ
     933 Î±ÎœÎ±Ï†Î­ÏÎµÏ„αι στηΜ Ï 
     934πηρεσία. ΀έλος τα πεΎία Πρωτόκολλο και Πόρτα, πρέπει Μα αΜαφέροΜται στο πρωτόκολλο ποϠ
     935 Ï‡ÏÎ·ÏƒÎ¹ÎŒÎ¿Ï€Î¿Î¹ÎµÎ¯ η Ï 
     936πηρεσία (π.χ. tcp, udp) και στηΜ πόρτα ποϠ
     937 Î±ÎºÎ¿ÏÎµÎ¹.' 
     938                ), 
     939                'mynodes_services_edit' => array( 
     940                        'title' => 'ΕπεΟεργασία Ï 
     941πηρεσίας', 
     942                        'body' => 'Στη σελίΎα αϠ
     943τή Όπορείτε Μα επεΟεργαστείτε Όία Ï 
     944πηρεσία τοϠ
     945 ÎºÏŒÎŒÎ²Î¿Ï 
     946 ÏƒÎ±Ï‚. ΀ο πεΎίο ΔιεύΞϠ
     947Μση IP περιέχει όλες τις ΎιεϠ
     948ΞύΜσεις ποϠ
     949 Î­Ï‡ÎµÏ„ε Ύηλώσει και πρέπει Μα καΞορίζει τηΜ IP στηΜ οποία τρέχει (ακούει) η Ï 
     950πηρεσία. ΀ο πεΎίο URL, πρέπει Μα περιέχει το link για τηΜ Ï 
     951πηρεσία ή το link για κάποια σελίΎα ποϠ
     952 Î±ÎœÎ±Ï†Î­ÏÎµÏ„αι στηΜ Ï 
     953πηρεσία. ΀έλος τα πεΎία Πρωτόκολλο και Πόρτα, πρέπει Μα αΜαφέροΜται στο πρωτόκολλο ποϠ
     954 Ï‡ÏÎ·ÏƒÎ¹ÎŒÎ¿Ï€Î¿Î¹ÎµÎ¯ η Ï 
     955πηρεσία (π.χ. tcp, udp) και στηΜ πόρτα ποϠ
     956 Î±ÎºÎ¿ÏÎµÎ¹.' 
     957                ), 
     958                 
    864959                'nodes_search' => array( 
    865960                        'title' => 'ΚόΌβοι ΎικτύοϠ
  • trunk/includes/main_center.php

    r143 r151  
    6565                        case 'gmap': 
    6666                        case 'gearth': 
     67                        case 'services': 
    6768                        case 'search': 
    6869                                return TRUE; 
  • trunk/includes/main_menu.php

    r145 r151  
    6262                                $this->tpl['link_admin_nodes'] = makelink(array("page" => "admin", "subpage" => "nodes")); 
    6363                                $this->tpl['link_admin_users'] = makelink(array("page" => "admin", "subpage" => "users")); 
     64                                $this->tpl['link_admin_nodes_services'] = makelink(array("page" => "admin", "subpage" => "nodes_services")); 
     65                                $this->tpl['link_admin_services'] = makelink(array('page' => 'admin', 'subpage' => 'services')); 
    6466                        } 
    6567                        if ($main->userdata->privileges['admin'] === TRUE || $main->userdata->privileges['hostmaster'] === TRUE) { 
     
    8890                $this->tpl['link_allnodes'] = makelink(array("page" => "nodes")); 
    8991                $this->tpl['link_allranges'] = makelink(array("page" => "ranges", "subpage" => "search")); 
     92                $this->tpl['link_allservices'] = makelink(array("page" => "services")); 
    9093                $this->tpl['link_alldnszones'] = makelink(array("page" => "dnszones")); 
    9194                $this->tpl['link_restore_password'] = makelink(array("page" => "users", "action" => "restore")); 
     
    142145                                                'links.id' 
    143146                                                ); 
     147                $this->tpl['stats_services_active'] = 
     148                                $db->cnt('', 
     149                                                'nodes_services', 
     150                                                'nodes_services.status = "active"' 
     151                                                ); 
     152                $this->tpl['stats_services_total'] = 
     153                                $db->cnt('', 
     154                                                'nodes_services', 
     155                                                '' 
     156                                                ); 
    144157                return template($this->tpl, __FILE__); 
    145158        } 
  • trunk/includes/pages/mynodes/mynodes.php

    r144 r151  
    265265        } 
    266266 
     267        function table_services() { 
     268                global $construct, $db, $main; 
     269                $table_services = new table(array('TABLE_NAME' => 'table_services', 'FORM_NAME' => 'table_services')); 
     270                $table_services->db_data( 
     271                        'services.title, nodes_services.id, nodes.id AS nodes__id, ip_addresses.ip, nodes_services.url, nodes_services.info, nodes_services.status, nodes_services.date_in', 
     272                        'nodes_services 
     273                        LEFT JOIN nodes on nodes_services.node_id = nodes.id 
     274                        LEFT JOIN services on nodes_services.service_id = services.id 
     275                        LEFT JOIN ip_addresses ON ip_addresses.id = nodes_services.ip_id', 
     276                        "nodes_services.node_id = '".get('node')."'", 
     277                        '', 
     278                        "nodes_services.date_in ASC"); 
     279                foreach( (array) $table_services->data as $key => $value) { 
     280                        if ($key != 0) { 
     281                                if ($table_services->data[$key]['ip'])  
     282                                        $table_services->data[$key]['ip'] = long2ip($table_services->data[$key]['ip']); 
     283                                $table_services->info['EDIT'][$key] = makelink(array("page" => "mynodes", "subpage" => "services", "node" => intval(get('node')), "service" => $table_services->data[$key]['id'])); 
     284                        } 
     285                } 
     286                $table_services->info['EDIT_COLUMN'] = 'title'; 
     287                $table_services->db_data_translate('nodes_services__status'); 
     288                $table_services->db_data_multichoice('nodes_services', 'id'); 
     289                $table_services->info['MULTICHOICE_LABEL'] = 'delete'; 
     290                $table_services->db_data_remove('id','nodes__id'); 
     291                return $table_services; 
     292        } 
     293         
    267294        function table_photosview() { 
    268295                global $db, $vars; 
     
    325352                                $this->tpl['table_subnets'] = $construct->table($this->table_subnets(), __FILE__); 
    326353                                $this->tpl['table_ipaddr'] = $construct->table($this->table_ipaddr(), __FILE__); 
     354                                $this->tpl['table_services'] = $construct->table($this->table_services(), __FILE__); 
    327355                                $this->tpl['table_photosview'] = $construct->table($this->table_photosview(), __FILE__); 
    328356                                if ($this->has_owner_access()) $this->tpl['link_node_delete'] = makelink(array('action' => 'delete'), TRUE); 
     
    335363                                $this->tpl['link_subnet_add'] = makelink(array('page' => 'mynodes', 'subpage' => 'subnet', 'node' => get('node'), 'subnet' => 'add')); 
    336364                                $this->tpl['link_ipaddr_add'] = makelink(array('page' => 'mynodes', 'subpage' => 'ipaddr', 'node' => get('node'), 'ipaddr' => 'add')); 
     365                                $this->tpl['link_services_add'] = makelink(array('page' => 'mynodes', 'subpage' => 'services', 'node' => get('node'), 'service' => 'add')); 
     366 
    337367                        } 
    338368                        $this->tpl['link_gmap_pickup'] = makelink(array('page' => 'pickup', 'subpage' => 'gmap', "object_lat" => "form_node.elements['nodes__latitude']", "object_lon" => "form_node.elements['nodes__longitude']")); 
     
    375405                        $db->set('ip_addresses', array('node_id' => $_POST['nodes__id']), "node_id = ".intval(get('node'))); 
    376406                        $db->set('ip_ranges', array('node_id' => $_POST['nodes__id']), "node_id = ".intval(get('node'))); 
     407                        $db->set('services', array('node_id' => $_POST['nodes__id']), "node_id = '".get('node')."'"); 
    377408                        $db->set('links', array('node_id' => $_POST['nodes__id']), "node_id = ".intval(get('node'))); 
    378409                        $db->set('links', array('peer_node_id' => $_POST['nodes__id']), "peer_node_id = ".intval(get('node'))); 
     
    485516                foreach( (array) $_POST['id'] as $key => $value) { 
    486517                        $ret = $ret && $db->del("ip_addresses", "id = '".$value."'"); 
     518                } 
     519                if ($ret) { 
     520                        $main->message->set_fromlang('info', 'delete_success', makelink("",TRUE)); 
     521                } else { 
     522                        $main->message->set_fromlang('error', 'generic');                
     523                } 
     524        } 
     525         
     526        function output_onpost_table_services() { 
     527                global $db, $main; 
     528                $ret = TRUE; 
     529                foreach( (array) $_POST['id'] as $key => $value) { 
     530                        $ret = $ret && $db->del("nodes_services", "id = '".$value."'"); 
    487531                } 
    488532                if ($ret) { 
  • trunk/includes/pages/nodes/nodes_view.php

    r144 r151  
    134134                return $table_nameservers; 
    135135        } 
    136  
     136         
    137137        function table_links_p2p() { 
    138138                global $db; 
     
    240240                return $table_ipaddr_subnets; 
    241241        } 
    242                  
     242 
     243        function table_services() { 
     244                global $db, $vars, $lang; 
     245                $table_services = new table(array('TABLE_NAME' => 'table_services', 'FORM_NAME' => 'table_services')); 
     246                $table_services->db_data( 
     247                        'services.title, nodes_services.id, nodes.id AS nodes__id, ip_addresses.ip, nodes_services.url, nodes_services.info, nodes_services.status, nodes_services.date_in, IFNULL(nodes_services.protocol, services.protocol) AS protocol, IFNULL(nodes_services.port, services.port) AS port', 
     248                        'nodes_services 
     249                        LEFT JOIN nodes on nodes_services.node_id = nodes.id 
     250                        LEFT JOIN services on nodes_services.service_id = services.id 
     251                        LEFT JOIN ip_addresses ON ip_addresses.id = nodes_services.ip_id', 
     252                        "nodes_services.node_id = '".get('node')."'", 
     253                        '', 
     254                        "services.title ASC"); 
     255 
     256                foreach( (array) $table_services->data as $key => $value) { 
     257                        if ($key != 0) { 
     258                                if ($table_services->data[$key]['ip']) { 
     259                                        $table_services->data[$key]['ip'] = long2ip($table_services->data[$key]['ip']); 
     260                                        if ($table_services->data[$key]['protocol'] && $table_services->data[$key]['port']) { 
     261                                                $table_services->data[$key]['ip'] .= ' ('.$lang['db']['nodes_services__protocol-'.$table_services->data[$key]['protocol']].'/'.$table_services->data[$key]['port'].')'; 
     262                                        } 
     263                                } 
     264                                $table_services->info['LINK']['services__title'][$key] = $table_services->data[$key]['url']; 
     265                        } 
     266                } 
     267                $table_services->db_data_remove('id','nodes__id', 'url', 'protocol', 'port'); 
     268                $table_services->db_data_translate('nodes_services__status'); 
     269                return $table_services; 
     270        } 
     271         
    243272        function output() { 
    244273                if ($_SERVER['REQUEST_METHOD'] == 'POST' && method_exists($this, 'output_onpost_'.$_POST['form_name'])) return call_user_func(array($this, 'output_onpost_'.$_POST['form_name'])); 
     
    275304 
    276305                $this->tpl['table_ipaddr_subnets'] = $construct->table($this->table_ipaddr_subnets(), __FILE__); 
    277                  
     306                $this->tpl['table_services'] = $construct->table($this->table_services(), __FILE__); 
    278307                $t = $db->get('id, date_in, view_point, info', 'photos', "node_id = ".intval(get('node'))); 
    279308                foreach( (array) $t as $key => $value) { 
  • trunk/includes/pages/users/users.php

    r148 r151  
    3636                global $main, $db, $vars, $lang; 
    3737                $form_user = new form(array('FORM_NAME' => 'form_user')); 
    38                 $form_user->db_data('users.username, users.password, users.surname, users.name, users.email, users.phone, users.info'.($main->userdata->privileges['admin'] === TRUE?', rights.type, users.status':'')); 
     38                $form_user->db_data('users.username, users.password, users.surname, users.name, users.email, users.phone, users.info, users.language'); 
    3939                // Hide password... 
    4040                $form_user->data[1]['value'] = ''; 
     
    4444                $form_user->data[2]['Field'] .= '_c'; 
    4545                $form_user->data[2]['fullField'] .= '_c'; 
     46                $form_user->data[8]['Type'] = 'enum'; 
     47                $form_user->data[8]['Null'] = ''; 
     48                $form_user->data[8]['Type_Enums'][0] = array("value" => "", "output" => $lang['default']); 
     49                foreach($vars['language']['enabled'] as $key => $value) { 
     50                        if ($value) array_push($form_user->data[8]['Type_Enums'], array("value" => $key, "output" => ($lang['languages'][$key]==''?$key:$lang['languages'][$key]))); 
     51                } 
     52                 
    4653                if ($main->userdata->privileges['admin'] === TRUE) { 
    47                         $form_user->data[8]['Type'] = 'enum_multi'; 
     54                        $form_user->db_data('rights.type, users.status'); 
     55                        $form_user->data[9]['Type'] = 'enum_multi'; 
    4856                        $form_user->db_data_values_multi("rights", "user_id", get('user'), 'type');      
     57                         
    4958                        $form_user->db_data('users_nodes.node_id, users_nodes.node_id'); 
    50                         $form_user->data[10]['Field'] = 'node_id_owner'; 
    51                         $form_user->data[10]['fullField'] = 'node_id_owner'; 
     59                        $form_user->data[11]['Field'] = 'node_id_owner'; 
     60                        $form_user->data[11]['fullField'] = 'node_id_owner'; 
    5261                        $form_user->db_data_pickup("node_id_owner", "nodes", $db->get("nodes.id AS value, CONCAT(nodes.name, ' (#', nodes.id, ')') AS output", "users_nodes, nodes", "nodes.id = users_nodes.node_id AND users_nodes.user_id = '".get('user')."' AND users_nodes.owner = 'Y'"), TRUE); 
    5362                        $form_user->db_data_pickup("users_nodes.node_id", "nodes", $db->get("nodes.id AS value, CONCAT(nodes.name, ' (#', nodes.id, ')') AS output", "users_nodes, nodes", "nodes.id = users_nodes.node_id AND users_nodes.user_id = '".get('user')."' AND users_nodes.owner != 'Y'"), TRUE);            
    5463                } 
    55                 $form_user->db_data('users.language'); 
    56                 $form_user->data[12]['Type'] = 'enum'; 
    57                 $form_user->data[12]['Null'] = ''; 
    58                 $form_user->data[12]['Type_Enums'][0] = array("value" => "", "output" => $lang['default']); 
    59                 foreach($vars['language']['enabled'] as $key => $value) { 
    60                         if ($value) array_push($form_user->data[12]['Type_Enums'], array("value" => $key, "output" => ($lang['languages'][$key]==''?$key:$lang['languages'][$key]))); 
    61                 } 
     64                 
    6265                $form_user->db_data_values("users", "id", get('user')); 
    6366                $form_user->data[1]['value'] = ''; 
  • trunk/templates/basic/constructors/table.tpl

    r120 r151  
    7171                {assign var=onclick value="javascript: window.opener.pickup(window.opener.document.`$extra_data.PICKUP_OBJECT`,'`$extra_data.PICKUP_OUTPUT[row]`','`$extra_data.PICKUP_VALUE[row]`', window); return false;"|stripslashes} 
    7272        {/if} 
    73         <td class="{$cellclass}">{if $key==$edit_column && $smarty.section.row.index != 0}<a href="{$edit}"{if $extra_data.PICKUP_COLUMN != ''} onclick="{$onclick}"{/if}>{$cell|escape}</a>{else}{$cell|escape}{/if}</td> 
     73        <td class="{$cellclass}"> 
     74                {if $key==$edit_column && $smarty.section.row.index != 0} 
     75                <a href="{$edit}"{if $extra_data.PICKUP_COLUMN != ''} onclick="{$onclick}"{/if}> 
     76                {/if} 
     77                {if $extra_data.LINK.$fullkey[row] != ''} 
     78                <a href="{$extra_data.LINK.$fullkey[row]}"> 
     79                {/if} 
     80                {$cell|escape} 
     81                {if $key==$edit_column && $smarty.section.row.index != 0}</a>{/if} 
     82                {if $extra_data.LINK.$fullkey[row] != ''} 
     83                </a> 
     84                {/if} 
     85        </td> 
    7486        {/if} 
    7587        {/foreach} 
  • trunk/templates/basic/constructors/table2.tpl

    r48 r151  
    4141        {/if} 
    4242         
    43         <td class="{$cellclass}">{$cell|escape}</td> 
     43        <td class="{$cellclass}"> 
     44                {if $extra_data.LINK.$fullkey[row] != ''} 
     45                <a href="{$extra_data.LINK.$fullkey[row]}"> 
     46                {/if} 
     47                {$cell|escape} 
     48                {if $extra_data.LINK.$fullkey[row] != ''} 
     49                </a> 
     50                {/if} 
     51        </td> 
    4452        {/if} 
    4553        {/foreach} 
  • trunk/templates/basic/includes/main_menu.tpl

    r144 r151  
    6666                                        <td class="table-search-menu-text"><img src="templates/basic/images/search_ip.gif" width="33" height="32" alt="{$lang.all_ranges}" />&nbsp;<a href="{$link_allranges}">{$lang.all_ranges}</a></td> 
    6767                                </tr> 
     68                                <tr> 
     69                                        <td class="table-search-menu-text"><img src="templates/basic/images/services.gif" width="33" height="32" alt="{$lang.all_services}" />&nbsp;<a href="{$link_allservices}">{$lang.all_services}</a></td> 
     70                                </tr> 
    6871                                <tr> 
    6972                                        <td class="table-search-menu-text"> 
     
    104107                                </tr> 
    105108                                <tr> 
    106                                         <td rowspan="4" class="quick-login-text"><img src="templates/basic/images/stats.png" width="48" height="48" alt="{$lang.statistics}" /></td> 
     109                                        <td rowspan="5" class="quick-login-text"><img src="templates/basic/images/stats.png" width="48" height="48" alt="{$lang.statistics}" /></td> 
    107110                                        <td class="quick-login-text">{$stats_nodes_active}/{$stats_nodes_total} <span style="color: black;">{$lang.active_nodes|lower}</span></td> 
    108111                                </tr> 
     
    116119                                        <td class="quick-login-text">{$stats_aps} <span style="color: black;">{$lang.aps|lower}</span></td> 
    117120                                </tr> 
     121                                <tr> 
     122                                        <td class="quick-login-text">{$stats_services_active}/{$stats_services_total} <span style="color: black;">{$lang.active_services|lower}</span></td> 
     123                          </tr> 
    118124                                <tr> 
    119125                                        <td colspan="2" class="table-middle-left-pad"></td> 
     
    167173                                        <td colspan="2" class="table-form-title"><img src="templates/basic/images/user-small.png" alt="{$lang.users}" />&nbsp;<a href="{$link_admin_users}">{$lang.users}</a></td> 
    168174                                </tr> 
     175                                <tr class="table-form-row1"> 
     176                                        <td colspan="2" class="table-form-title"><img src="templates/basic/images/services-small.png" alt="{$lang.services}" />&nbsp;<a href="{$link_admin_nodes_services}">{$lang.services}</a></td> 
     177                                </tr> 
     178                                <tr class="table-form-row1"> 
     179                                        <td colspan="2" class="table-form-title"><img src="templates/basic/images/services-small.png" alt="{$lang.services_categories}" />&nbsp;<a href="{$link_admin_services}">{$lang.services_categories}</a></td> 
     180                                </tr> 
    169181                                <tr> 
    170182                                        <td colspan="2" class="table-middle-left-pad"></td> 
  • trunk/templates/basic/includes/pages/mynodes/mynodes.tpl

    r150 r151  
    8585<tr> 
    8686<td class="table-page-pad"> 
     87{include assign="t1" file="generic/link.tpl" link=$link_services_add content="`$lang.services_add`"} 
     88{include file=generic/title2.tpl title="`$lang.services` $t1" content=$table_services} 
     89</td> 
     90</tr> 
     91<tr> 
     92<td class="table-page-pad"> 
    8793{include file=generic/title2.tpl title="`$lang.myview`" content=$table_photosview} 
    8894</td> 
  • trunk/templates/basic/includes/pages/nodes/nodes_view.tpl

    r144 r151  
    7474<tr> 
    7575<td colspan="2" class="table-page-pad"> 
     76{include file=generic/title2.tpl title="`$lang.services`" content=$table_services} 
     77</td> 
     78</tr> 
     79<tr> 
     80<td colspan="2" class="table-page-pad"> 
    7681{include assign=t file=includes/pages/nodes/myview.tpl} 
    7782{include file=generic/title2.tpl title="`$lang.myview`" content=$t} 
Note: See TracChangeset for help on using the changeset viewer.