Changeset 929

Show
Ignore:
Timestamp:
10/04/07 18:18:53 (1 year ago)
Author:
arc
Message:

2007-10-04 Alberto Ruiz <aruiz@gnome.org>

  • server.py: /admin moved to / for the administrative interface
  • admin.html, admin.js: initial vserver options rendering
Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • cherokee-admin/trunk/admin.html

    r926 r929  
    11<html> 
    22<head> 
    3 <link rel="stylesheet" type="text/css" href="/admin/js/resources/css/ext-all.css" /> 
     3<link rel="stylesheet" type="text/css" href="js/resources/css/ext-all.css" /> 
    44</head> 
    55<body> 
     
    88<script type="text/javascript" src="admin.js"></script> 
    99<div id="vserver-list" style="width: 180px;"></div> 
     10<div id="vserver-options"></div> 
    1011</body> 
    1112</html> 
  • cherokee-admin/trunk/admin.js

    r926 r929  
    11Ext.onReady(function () { 
    22 
    3         var recordDefinition = Ext.data.Record.create([{name: 'vserver'}]); 
     3        function render_configuration_objects (path) { 
     4                function onSuccess (response) { 
     5                        var targetElement = document.getElementById("vserver-options"); 
     6                        targetElement.innerHTML = response.responseText; 
     7                         
     8                } 
     9                var connection = new Ext.data.Connection(); 
     10                connection.request({ 
     11                        url: path, 
     12                        success: onSuccess 
     13                }); 
     14        } 
    415 
    5         var vserverReader = new Ext.data.JsonReader({root: "vservers"}, recordDefinition); 
     16        function change_vserver (grid, rowIndex, columnIndex) { 
     17                var record = grid.getDataSource().getAt(rowIndex); 
     18                var vserver = record.data.vserver.toString(); 
     19 
     20                render_configuration_objects("/config/vserver/" + vserver); 
     21        } 
     22 
     23        var recordDefinition = Ext.data.Record.create ([{name: 'vserver'}]); 
     24 
     25        var vserverReader = new Ext.data.JsonReader ({root: "vservers"}, recordDefinition); 
    626 
    727        var ds = new Ext.data.Store({ 
    8                 proxy: new Ext.data.HttpProxy({url: "/config/vserver/?widget=grid"}), 
     28                proxy: new Ext.data.HttpProxy ({url: "/config/vserver/?widget=grid"}), 
    929                reader: vserverReader, 
    1030        }); 
    1131        ds.load(); 
    1232 
    13         var colModel = new Ext.grid.ColumnModel([{id: 'name', header: "Virtual Server", width: 160, sortable: false, locked:false, dataIndex: 'vserver'}]); 
     33       var colModel = new Ext.grid.ColumnModel ([{id: 'name', header: "Virtual Server", width: 160, sortable: false, locked:false, dataIndex: 'vserver'}]); 
    1434 
    1535        // create the Grid 
    16         var grid = new Ext.grid.Grid('vserver-list', { 
    17             ds: ds, 
    18             cm: colModel 
    19         }); 
    20   
    21         grid.render(); 
    22         grid.getSelectionModel().selectFirstRow(); 
     36        var grid = new Ext.grid.Grid ('vserver-list', { 
     37                ds: ds, 
     38                cm: colModel 
     39        }); 
     40 
     41        grid.on ('cellclick', change_vserver); 
     42 
     43        grid.render (); 
     44        grid.getSelectionModel ().selectFirstRow (); 
    2345}); 
    2446 
  • cherokee-admin/trunk/server.py

    r926 r929  
    2525        request_uri = self.env['REQUEST_URI'] 
    2626 
    27         if request_uri.startswith('/admin'): 
    28             self._admin_request(request_uri) 
    29             return 
    3027 
    3128        if request_uri.startswith("/config"): 
    3229            self._config_request(request_uri) 
     30            return 
     31 
     32        # By deafault, it's an admin interface request 
     33        self._admin_request(request_uri) 
     34 
    3335 
    3436    def _config_request(self, request_uri): 
     
    3739        if "?" in request_uri: 
    3840            request_path, request_options = request_uri.split("?") 
    39        else: 
     41        else: 
    4042            request_path = request_uri 
    41             request_options = "" 
    42  
     43            request_options = ""  
     44         
     45         
    4346        request_path = strip_slashes(request_path) 
    4447        request_options = self._parse_options(request_options) 
    45  
     48         
     49        request_uri_elements = request_path.split("/") 
     50        config_path = request_uri_elements[1:] # Override the /config/ element 
     51         
    4652        config_node = self.config.root 
    47         request_uri_elements = request_path.split("/") 
    48  
    49         for path_element in request_uri_elements[1:]: 
     53         
     54        for path_element in config_path: 
    5055            path_element = path_element.replace("$", "/") 
    51                        
     56                               
    5257            if not path_element: 
    5358                continue 
    54  
     59             
    5560            config_node = config_node[path_element] 
    5661 
    5762        #Special EXT JS request for the treeview 
    58        if request_uri_elements[-1] == "vserver" \ 
     63        if request_uri_elements[-1] == "vserver" \ 
    5964                and request_options.has_key("widget"): 
    6065            widget = request_options ["widget"] 
     
    6873        if config_node: 
    6974            self._return_node_as_json(config_node) 
    70  
     75     
    7176    def _admin_request(self, request_uri): 
    7277        """Javascript or CSS content request handler.""" 
    7378        if request_uri.endswith(".js") or request_uri.endswith(".css"): 
    74             content = open(request_uri[7:]) 
     79            content = open(request_uri[1:]) 
    7580            self.wfile.write(content.read()) 
    76            content.close() 
     81            content.close() 
    7782            return 
    7883 
    79         if strip_slashes(request_uri) == "admin": 
    80             ui = open(ADMIN_TEMPLATE) 
    81             self.wfile.write(ui.read()) 
    82             ui.close() 
    83             return 
     84        ui = open(ADMIN_TEMPLATE) 
     85        self.wfile.write(ui.read()) 
     86        ui.close() 
     87        return 
    8488                 
    8589    def _return_vserver_grid(self, config_node): 
    8690        comma = False 
    87  
     91         
    8892        records = "[" 
    8993        for vserver in config_node: 
    9094            if comma: 
    9195                records += ", " 
    92  
     96             
    9397            records += '{"vserver": "%s"}' % (vserver,) 
    9498            comma = True 
    95  
    96        
     99         
    97100        records += "]" 
    98101 
     
    103106    def _return_vserver_treeview(self, config_node): 
    104107        """JSON formatted EXT JS vserver treeview response.""" 
    105  
     108         
    106109        comma = False 
    107  
     110         
    108111        self.wfile.write("[") 
    109112        id = 0 
     
    111114            if comma: 
    112115                self.wfile.write(", ") 
    113  
     116             
    114117            self.wfile.write('{"id": "%s", "text": "%s", "cls": "icon", "leaf": true}' \ 
    115118                             % (vserver, vserver)) 
     
    117120            id += 1 
    118121            comma = True 
    119  
    120        
     122         
    121123        self.wfile.write("]") 
    122124