All pastes #733546 Raw Edit

Someone

public text v1 · immutable
·published 2007-10-11 21:47 UTC
rendered paste body
#extends cobbler.webui.master


#block body

<script language="javascript">

function show_interface(name,state)
{
   ## this likely does not work in MSIE, patches accepted
   ## from those forced to endure it
   obj = document.getElementById("interface-panel-" + name);
   obj.style.visibility = 'visible';
   obj.style.display = 'block';
   ## FIXME: do something with "block" ?
   obj = document.getElementById("interface-toggle-" + name);
   obj.style.visibility = 'hidden';
   obj.style.display = 'none';
}

#if $system
function disablename(value)
{
    document.getElementById("name").disabled=value;
    if (value) {
        document.getElementById("name").value = "$system.name";
    }
}
#else
function get_random_mac()
{
    xmlHttp = new XMLHttpRequest();
    xmlHttp.open("GET", "$base_url/random_mac", true);
    xmlHttp.onreadystatechange = function () {
        if (xmlHttp.readyState == 4 && xmlHttp.status == 200) {
            var mac_field = document.getElementById("mac")
            var result = xmlHttp.responseText;
            if (result.charAt(2) == ':' && result.charAt(5) == ':') {
                mac_field.value = result;
            }
        }
    };
    xmlHttp.send(null);
}
#end if
</script>

<form method="post" action="$base_url/system_save">
<fieldset id="cform">
   
    #if $system
        <input type="hidden" name="new_or_edit" value="edit"/>
        <input type="hidden" name="oldname" value="$system.name"/>
    #else
        <input type="hidden" name="new_or_edit" value="new"/>
    #end if

    <legend>Edit a System</legend>

    <table border=0>

    <tr>
    <td>
    <label for="name">System Name</label>
    </td>
    <td>
    #if $system
    <input type="text" size="128" style="width: 150px;" name="name" id="name" disabled="true"
    #else
    <input type="text" size="128" style="width: 150px;" name="name" id="name"
    #end if
        #if $system
            value="$system.name"
        #end if
    />
    <p class="context-tip">Example: vanhalen</p>
    </td>
    </tr>

    #if $system
    <tr>
    <td>
    <label for="mode">Edit Mode</label>
    </td>
    <td>
    <input type="radio" name="editmode" value="edit" checked onclick="javascript:disablename(true)">Edit
    <input type="radio" name="editmode" value="rename" onclick="javascript:disablename(false)">Rename + Edit
    <input type="radio" name="editmode" value="copy" onclick="javascript:disablename(false)">Copy + Edit
    <p class="context-tip">How do you want to modify this object?</p>
    </td>
    </tr>
    #end if

    <tr>
    <td>
    <label for="profile">Profile</label>
    </td>
    <td>
    <select name="profile" id="profile">
        #for $profile in $profiles:
        <option name="$profile.name"
            #if $system and $system.profile == $profile.name
                    selected="1"
            #end if
        >$profile.name</option>
        #end for
    </select>
    <p class="context-tip">What profile should be installed on this system?</p>
    </td>
    </tr>


    #set $all_interfaces = [ "intf0", "intf1", "intf2", "intf3", "intf4", "intf5", "intf6", "intf7" ] 
    #if $system
        #set $interfaces = $system.interfaces.keys()
        #set $defined_interfaces = []
        #for $potential in $all_interfaces
            #if $potential in $interfaces
                #set $rc = $defined_interfaces.append($potential)
            #end if
        #end for
    #else
        #set $interfaces = [ "intf0", "intf1", "intf2", "intf3", "intf4", "intf5", "intf6", "intf7" ]
        #set $defined_interfaces = [ "intf0" ]
    #end if
 


    ## ====================================== start of looping through interfaces

    #for $interface in $all_interfaces

        ## ----------------------------------
        ## calculate some initial CSS visibility
        ## ----------------------------------

        #if $interface in $defined_interfaces
             #set $toggler_visibility = "hidden !important"
             #set $toggler_display = "none !important"
             #set $panel_visibility  = "visible !important"
             #set $panel_display = "block !important"
        #else
             #set $toggler_visibility = "visible !important"
             #set $toggler_display = "block !important"
             #set $panel_visibility  = "hidden !important"
             #set $panel_display = "none !important"
        #end if

        ## ----------------------------------
        ## load up initial variable values
        ## ----------------------------------

        #if $system and $interface in $defined_interfaces
            #set $macaddress  = $system.interfaces[$interface]["mac_address"]
            #set $ipaddress   = $system.interfaces[$interface]["ip_address"]
            #set $hostname    = $system.interfaces[$interface]["hostname"]
            #set $dhcptag     = $system.interfaces[$interface]["dhcp_tag"]
            #set $virtbridge  = $system.interfaces[$interface]["virt_bridge"]
            #set $subnet      = $system.interfaces[$interface]["subnet"]
            #set $gateway     = $system.interfaces[$interface]["gateway"]
        #else
            #set $macaddress  = ""
            #set $ipaddress   = ""
            #set $hostname    = ""
            #set $dhcptag     = ""
            #set $virtbridge  = ""
            #set $subnet      = ""
            #set $gateway     = ""
        #end if

        ## ----------------------------------------
        ## render the toggle link to hide the interfaces not yet defined
        ## ----------------------------------------

        <tr>
        <td>
        <label>Interface ($interface)
        </td>
        <td>
        <hr width="95%">
        </td>
        </tr>

        <div id="interface-toggle-$interface"  style="visibility:$toggler_visibility; display:$toggler_display;">
        <tr>
        <td>
        <label>Expand</label>
        </td>
        <td>
        <A href="javascript:void('')" onclick="show_interface('$interface');">Click to expand $interface</A>
        </td>
        </tr>
        </div>
        
        ## ----------------------------------------
        ## now show all of the interface fields which may or may not
        ## be hidden but are always there
        ## ----------------------------------------

        <div id="interface-panel-$interface" style="visibility:$panel_visibility; display:$panel_display">

        <tr>
        <td>
        <label for="mac-$interface">MAC</label>
        </td>
        <td>
        <input type="text" size="64" style="width: 150px;" name="mac-$interface" id="mac-$interface"
               value="$macaddress"
        />
        #if not $system
            <a href="javascript: get_random_mac()" style="font-size: 0.8em;">random</a>   
        #end if
        <p class="context-tip">Example: AA:BB:CC:DD:EE:FF</p>
        </td>
        </tr>

        <tr>
        <td>
        <label for="ip-$interface">IP</label>
        </td>
        <td>
        <input type="text" size="64" style="width: 150px;" name="ip-$interface" id="ip-$interface"
                value="$ipaddress"
        />
        <p class="context-tip">Optional.  Example: 192.168.10.15</p>
        </td>
        </tr>

        <tr>
        <td>
        <label for="hostname-$interface">Hostname</label>
        </td>
        <td>
        <input type="text" size="255" style="width: 150px;" name="hostname-$interface" id="hostname-$interface"
                value="$hostname"
        />
        <p class="context-tip">Optional.  Example: vanhalen.example.org</p>
        </td>
        </tr>

        <tr>
        <td>
        <label for="dhcptag-$interface">DHCP Tag</label>
        </td>
        <td>
        <input type="text" size="128" style="width: 150px;" name="dhcptag-$interface" id="dhcptag-$interface"
               value="$dhcptag"
        />
        <p class="context-tip">Selects alternative subnets, see manpage or leave blank</p>
        </td>
        </tr>

        ## FIXME: add virt_bridge editing (like above)
        ## FIXME: add subnet editing (like above)
        ## FIXME: add gateway editing (like above)
        ## FIXME: make the save function understand the new fieldname-$interface variables
        ##        only enable an interface for saving if one of it's fields is non-empty
        ## FIXME: delete checkboxes and accompanying API method.  No delete for intf0.

        </div>

    #end for
    ## ====================================== end of looping through interfaces

    ## now we're back to doing regular fields
    ## FIXME: should all of these be moved up before the interface section?
    ## FIXME: make entire interface block seperately collapseable?

    <tr>
    <td>
    <label for="kopts">Kernel Options</label>
    </td>
    <td>
    <input type="text" size="255" style="width: 150px;" name="kopts" id="kopts"
        #if $system
            value="$system.kernel_options"
        #end if
    />
    <p class="context-tip">Example: noipv6 magic=foo</p>
    </td>
    </tr>

    <tr>
    <td>
    <label for="ksmeta">Kickstart Metadata</label>
    </td>
    <td>
    <input type="text" size="255" style="width: 150px;" name="ksmeta" id="ksmeta"
        #if $system
            value="$system.ks_meta"
        #end if
    />
    <p class="context-tip">Example: dog=fido gnome=yes</p>
    </td>
    </tr>

    <tr>
    <td>
    <label for="netboot">Netboot Enabled</label>
    </td>
    <td>
    <input type="checkbox" name="netboot" id="netboot"
    #if not $system or $system.netboot_enabled is True
        checked="True"
    #end if
    >
    <p class="context-tip">Deselect to keep this system from PXE booting</p>
    </td>
    </tr>

    #if $system
    <tr>
    <td>
    <label for="delete">Delete</label> 
    </td>
    <td>
       <input type="checkbox" name="delete1" value="delete1">Yes
       <input type="checkbox" name="delete2" value="delete2">Really
    <p class="context-tip">Check both buttons and click save to delete this object</p>
    </td>
    </tr>
    #end if

    <tr>
    <td>
    </td>
    <td>
    <input type="submit" name="submit" value="Save"/>
    <input type="reset" name="reset" value="Reset"/>
    </td>
    </tr>

</fieldset>
</form>

#end block body