CVSROOT: /cvs/cluster Module name: conga Changes by: [EMAIL PROTECTED] 2007-09-25 22:47:05
Modified files: luci/cluster : form-chooser form-macros resource-form-macros luci/homebase : form-chooser form-macros luci_homebase.css luci/plone-custom: sys_svc.css luci/storage : cylinder_select.js form-macros storage_probing.js storage_utils.js storage_validation.js validate_html Log message: More cleanup and fix some javascript bugs Patches: http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/cluster/form-chooser.diff?cvsroot=cluster&r1=1.19&r2=1.20 http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/cluster/form-macros.diff?cvsroot=cluster&r1=1.213&r2=1.214 http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/cluster/resource-form-macros.diff?cvsroot=cluster&r1=1.42&r2=1.43 http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/homebase/form-chooser.diff?cvsroot=cluster&r1=1.11&r2=1.12 http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/homebase/form-macros.diff?cvsroot=cluster&r1=1.61&r2=1.62 http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/homebase/luci_homebase.css.diff?cvsroot=cluster&r1=1.43&r2=1.44 http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/plone-custom/sys_svc.css.diff?cvsroot=cluster&r1=1.1&r2=1.2 http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/storage/cylinder_select.js.diff?cvsroot=cluster&r1=1.3&r2=1.4 http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/storage/form-macros.diff?cvsroot=cluster&r1=1.28&r2=1.29 http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/storage/storage_probing.js.diff?cvsroot=cluster&r1=1.1&r2=1.2 http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/storage/storage_utils.js.diff?cvsroot=cluster&r1=1.1&r2=1.2 http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/storage/storage_validation.js.diff?cvsroot=cluster&r1=1.1&r2=1.2 http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/storage/validate_html.diff?cvsroot=cluster&r1=1.6&r2=1.7 --- conga/luci/cluster/form-chooser 2007/08/08 21:00:06 1.19 +++ conga/luci/cluster/form-chooser 2007/09/25 22:47:05 1.20 @@ -1,3 +1,12 @@ +<tal:comment tal:replace="nothing"> +** Copyright (C) 2006-2007 Red Hat, Inc. +** +** This program is free software; you can redistribute +** it and/or modify it under the terms of version 2 of the +** GNU General Public License as published by the +** Free Software Foundation. +</tal:comment> + <html> <head> <title tal:content="string:"></title> --- conga/luci/cluster/form-macros 2007/09/25 03:51:02 1.213 +++ conga/luci/cluster/form-macros 2007/09/25 22:47:05 1.214 @@ -1,3 +1,12 @@ +<tal:comment tal:replace="nothing"> +** Copyright (C) 2006-2007 Red Hat, Inc. +** +** This program is free software; you can redistribute +** it and/or modify it under the terms of version 2 of the +** GNU General Public License as published by the +** Free Software Foundation. +</tal:comment> + <html> <head> --- conga/luci/cluster/resource-form-macros 2007/09/25 03:51:02 1.42 +++ conga/luci/cluster/resource-form-macros 2007/09/25 22:47:05 1.43 @@ -1,3 +1,12 @@ +<tal:comment tal:replace="nothing"> +** Copyright (C) 2006-2007 Red Hat, Inc. +** +** This program is free software; you can redistribute +** it and/or modify it under the terms of version 2 of the +** GNU General Public License as published by the +** Free Software Foundation. +</tal:comment> + <html> <head> <title tal:content="template/title">The title</title> --- conga/luci/homebase/form-chooser 2006/11/01 23:04:17 1.11 +++ conga/luci/homebase/form-chooser 2007/09/25 22:47:05 1.12 @@ -1,3 +1,12 @@ +<tal:comment tal:replace="nothing"> +** Copyright (C) 2006-2007 Red Hat, Inc. +** +** This program is free software; you can redistribute +** it and/or modify it under the terms of version 2 of the +** GNU General Public License as published by the +** Free Software Foundation. +</tal:comment> + <html> <head> --- conga/luci/homebase/form-macros 2007/09/25 03:51:21 1.61 +++ conga/luci/homebase/form-macros 2007/09/25 22:47:05 1.62 @@ -1,3 +1,12 @@ +<tal:comment tal:replace="nothing"> +** Copyright (C) 2006-2007 Red Hat, Inc. +** +** This program is free software; you can redistribute +** it and/or modify it under the terms of version 2 of the +** GNU General Public License as published by the +** Free Software Foundation. +</tal:comment> + <html> <head> --- conga/luci/homebase/luci_homebase.css 2007/09/25 03:51:21 1.43 +++ conga/luci/homebase/luci_homebase.css 2007/09/25 22:47:05 1.44 @@ -1,3 +1,12 @@ +/* +** Copyright (C) 2006-2007 Red Hat, Inc. +** +** This program is free software; you can redistribute +** it and/or modify it under the terms of version 2 of the +** GNU General Public License as published by the +** Free Software Foundation. +*/ + input[type=text], input[type=password] { padding: .2em ! important; font-family: "Bitstream Vera Sans Mono", "DejaVu Sans Mono", monospace; --- conga/luci/plone-custom/sys_svc.css 2007/06/28 16:02:50 1.1 +++ conga/luci/plone-custom/sys_svc.css 2007/09/25 22:47:05 1.2 @@ -1,3 +1,12 @@ +/* +** Copyright (C) 2007 Red Hat, Inc. +** +** This program is free software; you can redistribute +** it and/or modify it under the terms of version 2 of the +** GNU General Public License as published by the +** Free Software Foundation. +*/ + input[type=image] { border: 0; background: transparent; --- conga/luci/storage/cylinder_select.js 2007/09/25 18:55:13 1.3 +++ conga/luci/storage/cylinder_select.js 2007/09/25 22:47:05 1.4 @@ -58,12 +58,12 @@ } } - parent = top.document.getElementById(properties_span_id); + var parent_elem = top.document.getElementById(properties_span_id); - for (var i = 0 ; i < parent.childNodes.length ; i++) { - var item = parent.childNodes[i]; + for (var i = 0 ; i < parent_elem.childNodes.length ; i++) { + var item = parent_elem.childNodes[i]; var item_type = item.nodeName.toLowerCase(); - if (item_type == 'span' || item.type == 'div') { + if (item_type == 'span' || item_type == 'div') { if (item.id == current_selection) { item.className = 'visible'; } else if (item.className == 'visible') { @@ -86,7 +86,7 @@ var id = elem[0]; var beg = elem[1][0]; var end = elem[1][1]; - if (x > beg && x < end) { + if (x >= beg && x <= end) { select_subcyl(id, h_data); } } --- conga/luci/storage/form-macros 2007/09/25 18:55:13 1.28 +++ conga/luci/storage/form-macros 2007/09/25 22:47:05 1.29 @@ -21,17 +21,18 @@ <div metal:define-macro="commit-changes"> <script type="text/javascript" src="storage_utils.js"></script> - <span tal:omit-tag="" - tal:define="batch_id python:here.apply_storage_changes(ricci, storage_report, request); - check_URL context/storage/check-batch/absolute_url; - check_url python:check_URL + '?storagename=' + storagename + '&batch_id=' + batch_id"> + <tal:block tal:define=" + batch_id python:here.apply_storage_changes(ricci, storage_report, request); + check_URL context/storage/check-batch/absolute_url; + check_url python:check_URL + '?storagename=' + storagename + '&batch_id=' + batch_id"> <div metal:use-macro="here/form-macros/macros/display-committing-changes" /> + <form id="urls_form"> <input type="hidden" name="check_url" tal:attributes="value check_url" /> </form> - </span> + </tal:block> </div> <div metal:define-macro="display-committing-changes"> @@ -378,9 +379,9 @@ </div> <div metal:define-macro="view-mapper-form"> - <div metal:use-macro="here/form-macros/macros/content-scripts"/> - <div metal:use-macro="here/form-macros/macros/form-scripts"/> - <div metal:use-macro="here/form-macros/macros/single-visible-span"/> + <div metal:use-macro="here/form-macros/macros/content-scripts" /> + <div metal:use-macro="here/form-macros/macros/form-scripts" /> + <div metal:use-macro="here/form-macros/macros/single-visible-span" /> <tal:block tal:define=" mapper python:here.get_mapper_data(storage_report, request['mapper_id']); @@ -401,7 +402,7 @@ <input type="checkbox" id="graphics_checkbox_id" tal:attributes=" checked mapper/graphical_view" - onchange="var s = (this.checked)?'graphical_view':'textual_view'; singleVisibleSpan('mappings_view', s);" /> + onchange="var s = (this.checked) ? 'graphical_view' : 'textual_view'; singleVisibleSpan('mappings_view', s);" /> Graphical View <small>(Uncheck if volumes are too small to select)</small> <span id="mappings_view" tal:define=" @@ -412,8 +413,9 @@ tal:define="global bd_path request/bd_path|nothing"> <tal:block tal:condition="not: bd_path"> - <tal:block tal:define="global bd_path python:''"/> + <tal:block tal:define="global bd_path python:''" /> </tal:block> + <iframe style="border: none;" tal:attributes=" src python:'mappings_provider?storagename=' + storagename + '&mapper_id=' + mapper['mapper_id'] + '&selected_path=' + bd_path; @@ -545,138 +547,119 @@ <div metal:use-macro="here/form-macros/macros/form-scripts" /> <form method="get" tal:attributes="id mapper_template_form_id"> - <input tal:attributes="type string:hidden; - name string:pagetype; - value string:commit_changes"/> - - <input tal:attributes="type string:hidden; - name string:object_type; - value string:mapper_template"/> - <input tal:attributes="type string:hidden; - name string:mapper_type; - value mapper/mapper_type"/> - - <input tal:attributes="type string:hidden; - name string:mapper_id; - value python:''"/> + <input type="hidden" name="pagetype" + tal:attributes="value string:commit_changes" /> - <input tal:attributes="type string:hidden; - name string:storagename; - value storagename"/> + <input type="hidden" name="object_type" value="mapper_template" /> + <input type="hidden" name="mapper_type" + tal:attributes="value mapper/mapper_type" /> + <input type="hidden" name="mapper_id" value="" /> + + <input type="hidden" name="storagename" + tal:attributes="value storagename" /> + + <table class="props-form-table"> + <tr class="props-form-header"> + <th colspan="2" tal:attributes=" + style python:here.add_commas('font-size: large', 'color: ' + mapper['color'])"> + <table> + <tr> + <td style="min-width: 30px;"> + <img tal:condition="mapper/icon" + tal:attributes="src mapper/icon" + height="29px" + width="29px" /> + </td> + <td style="width: 100%;"> + Creating New <span tal:replace="mapper/pretty_type" /> + </td> + <td style="min-width: 30px;"> </td> + </tr> + </table> + </th> + </tr> + <tr class="props-form-body"> + <td> + <table class="props-inner-table" + tal:define="props mapper/props_ordered"> - <table class="props-form-table"> - <tr class="props-form-header"> - <th colspan="2" - tal:attributes="style python:here.add_commas('font-size: large', 'color: ' + mapper['color'])"> - <table> - <tr> - <td style="min-width: 30px;"> - <img tal:condition="mapper/icon" - tal:attributes="src mapper/icon" - height="29px" - width="29px"/> - </td> - <td style="width: 100%;"> - Creating New <span tal:replace="mapper/pretty_type"/> - </td> - <td style="min-width: 30px;"> - - </td> - </tr> - </table> - </th> - </tr> - <tr class="props-form-body"> - <td> - <table class="props-inner-table" - tal:define="props mapper/props_ordered"> - <div metal:use-macro="here/form-macros/macros/display-props-tableless"/> - </table> - </td> - <td style="height: 100%;"> - <table class="props-form-table" - style="height: 100%;"> - <tr class="props-form-header"> - <th> - <span tal:condition="python:mapper['min_sources'] == mapper['max_sources']"> - Select <span tal:replace="mapper/min_sources"/> <span tal:replace="mapper/pretty_source_name"/> - </span> - <span tal:condition="python:mapper['min_sources'] != mapper['max_sources']"> - Select <span tal:replace="mapper/min_sources"/> to <span tal:replace="mapper/max_sources"/> <span tal:replace="mapper/pretty_sources_name"/> - </span> - </th> - </tr> - <tr class="props-form-body"> - <td> - <table class="props-inner-table"> - <span tal:omit-tag="" - tal:define="bds mapper/new_sources" - tal:repeat="bd bds"> - <tr> - <td> - <input tal:attributes="type string:checkbox; - name python:'source_bd_' + bd['path']"/> - </td> - <td tal:define="bytes bd/props/size/value; - dummy python:here.bytes_to_value_units(bytes); - size python:dummy[0]; - units python:dummy[1]"> - <span tal:replace="bd/path"/> (<span tal:replace="size"/> <span tal:replace="units"/> - <span tal:replace="bd/pretty_type"/>) - </td> - </tr> - </span> - <tr> - <td colspan="2" - style="height: 100%;"> - - </td> - </tr> - </table> - </td> - </tr> - <tr class="props-form-footer"> - <td> - - </td> - </tr> - </table> - </td> - </tr> - <tr class="props-form-footer"> - <td colspan="2"> - <table style="width: 100%;"> - <tr> - <td align="left"> - - </td> - <td align="right"> - <input type="button" - name="action_type" - value="Reset" - onclick="return reset_form(this.form)" - class="form_button"/> - <input tal:define="prompt_msg python:'Do you really want to create new ' + mapper['pretty_type'] + '?'; - validate_url context/validate_html/absolute_url" - tal:attributes="id create_mapper_button_id; - type string:button; - name string:action_type; - value string:Create; - onclick python:'return validate_and_submit_form(\'' + validate_url + '\', \'' + mapper_template_form_id + '\', \'' + create_mapper_button_id + '\', \'' + prompt_msg + '\')'" - class="form_button"/> - </td> - </tr> - </table> - </td> - </tr> - </table> - </form> + <div metal:use-macro="here/form-macros/macros/display-props-tableless" /> + </table> + </td> + <td style="height: 100%;"> + <table class="props-form-table" style="height: 100%;"> + <tr class="props-form-header"> + <th> + <span tal:condition="python:mapper['min_sources'] == mapper['max_sources']"> + Select <span tal:replace="mapper/min_sources"/> <span tal:replace="mapper/pretty_source_name" /> + </span> + <span tal:condition="python:mapper['min_sources'] != mapper['max_sources']"> + Select <span tal:replace="mapper/min_sources" /> to <span tal:replace="mapper/max_sources" /> <span tal:replace="mapper/pretty_sources_name" /> + </span> + </th> + </tr> + <tr class="props-form-body"> + <td> + <table class="props-inner-table"> + <tr tal:repeat="bd mapper/new_sources"> + <td> + <input type="checkbox" + tal:attributes="name python:'source_bd_' + bd['path']" /> + </td> + <td tal:define=" + bytes bd/props/size/value; + dummy python:here.bytes_to_value_units(bytes); + size python:dummy[0]; + units python:dummy[1]"> + <span tal:replace="bd/path" /> (<span tal:replace="size" /> <span tal:replace="units" /> - <span tal:replace="bd/pretty_type" />) + </td> + </tr> + <tr> + <td colspan="2" style="height: 100%;"> + + </td> + </tr> + </table> + </td> + </tr> + <tr class="props-form-footer"> + <td> + + </td> + </tr> + </table> + </td> + </tr> + <tr class="props-form-footer"> + <td colspan="2"> + <table style="width: 100%;"> + <tr> + <td align="left"> + + </td> + <td align="right"> + <input type="button" name="action_type" value="Reset" + onclick="return reset_form(this.form)" + class="form_button" /> + + <input type="button" name="action_type" + value="Create" class="form_button" + tal:define=" + prompt_msg python:'Do you really want to create new ' + mapper['pretty_type'] + '?'; + validate_url context/validate_html/absolute_url" + tal:attributes=" + id create_mapper_button_id; + onclick python:'return validate_and_submit_form(\'' + validate_url + '\', \'' + mapper_template_form_id + '\', \'' + create_mapper_button_id + '\', \'' + prompt_msg + '\')'" /> + </td> + </tr> + </table> + </td> + </tr> + </table> + </form> </div> - - - - <div metal:define-macro="add-sources-form" tal:define=" mapper python:here.get_mapper_data(storage_report, request['mapper_id']); prefix python:'add_sources_to_' + mapper['mapper_id'] + '_'; @@ -688,249 +671,241 @@ <div metal:use-macro="here/form-macros/macros/forms-css" /> <div metal:use-macro="here/form-macros/macros/form-scripts" /> - <span tal:omit-tag="" - tal:condition="not: mapper/new_sources"> - There are no available <span tal:replace="mapper/pretty_sources_name"/> to be added to <span tal:replace="mapper/pretty_type"/> '<span tal:replace="mapper/pretty_name"/>'. - <br/> - <br/> - <a tal:define="go_to_mapper_url python:'./?pagetype=52&mapper_type=' + mapper['mapper_type'] + '&mapper_id=' + mapper['mapper_id'] + '&storagename=' + storagename" - tal:attributes="href go_to_mapper_url"> - Go Back to <span tal:replace="mapper/pretty_type"/> - </a> - </span> - <form tal:condition="mapper/new_sources" - tal:attributes="id add_sources_form_id; - method string:get"> - - <input tal:attributes="type string:hidden; - name string:pagetype; - value string:commit_changes"/> + <tal:block tal:condition="not: mapper/new_sources"> + There are no available <span tal:replace="mapper/pretty_sources_name" /> to be added to <span tal:replace="mapper/pretty_type" /> '<span tal:replace="mapper/pretty_name" />'. + <br/> + <br/> + <a tal:define=" + go_to_mapper_url python:'./?pagetype=52&mapper_type=' + mapper['mapper_type'] + '&mapper_id=' + mapper['mapper_id'] + '&storagename=' + storagename" + tal:attributes="href go_to_mapper_url"> + Go Back to <span tal:replace="mapper/pretty_type" /> + </a> + </tal:block> - <input tal:attributes="type string:hidden; - name string:object_type; - value string:add_sources"/> + <form method="get" tal:condition="mapper/new_sources" + tal:attributes="id add_sources_form_id"> - <input tal:attributes="type string:hidden; - name string:mapper_type; - value mapper/mapper_type"/> + <input type="hidden" name="pagetype" value="commit_changes" /> + <input type="hidden" name="object_type" value="add_sources" /> - <input tal:attributes="type string:hidden; - name string:mapper_id; - value mapper/mapper_id"/> + <input type="hidden" name="mapper_type" + tal:attributes="value mapper/mapper_type"/> - <input tal:attributes="type string:hidden; - name string:storagename; - value storagename"/> + <input type="hidden" name="mapper_id" + tal:attributes="value mapper/mapper_id" /> + + <input type="hidden" name="storagename" + tal:attributes="value storagename" /> + + <table class="props-form-table"> + <tr class="props-form-header"> + <th colspan="2" tal:attributes=" + style python:here.add_commas('font-size: large', 'color: ' + mapper['color'])"> + <table> + <tr> + <td style="min-width: 30px;"> + <img tal:condition="mapper/icon" + height="29px" width="29px" + tal:attributes="src mapper/icon" /> + </td> + <td style="width: 100%;"> + Adding new <span tal:replace="mapper/pretty_sources_name" /> to <span tal:replace="mapper/pretty_type" /> '<span tal:replace="mapper/pretty_name" />' + </td> + <td style="min-width: 30px;"> + + </td> + </tr> + </table> + </th> + </tr> - <table class="props-form-table"> - <tr class="props-form-header"> - <th colspan="2" - tal:attributes="style python:here.add_commas('font-size: large', 'color: ' + mapper['color'])"> - <table> - <tr> - <td style="min-width: 30px;"> - <img tal:condition="mapper/icon" - tal:attributes="src mapper/icon" - height="29px" - width="29px"/> - </td> - <td style="width: 100%;"> - Adding new <span tal:replace="mapper/pretty_sources_name"/> to <span tal:replace="mapper/pretty_type"/> '<span tal:replace="mapper/pretty_name"/>' - </td> - <td style="min-width: 30px;"> - - </td> - </tr> - </table> - </th> - </tr> - <tr class="props-form-body"> - <td style="height: 100%;"> - <table class="props-inner-table"> - <th colspan="2"> - <span tal:condition="python:len(mapper['new_sources']) == 1"> - Select <span tal:replace="mapper/pretty_source_name"/> to add - </span> - <span tal:condition="python:len(mapper['new_sources']) > 1"> - Select one or more <span tal:replace="mapper/pretty_sources_name"/> to add - </span> - </th> - <span tal:omit-tag="" - tal:define="bds mapper/new_sources" - tal:repeat="bd bds"> - <tr> - <td> - <input tal:attributes="type string:checkbox; - name python:'source_bd_' + bd['path']"/> - </td> - <td tal:define="bytes bd/props/size/value; - dummy python:here.bytes_to_value_units(bytes); - size python:dummy[0]; - units python:dummy[1]"> - <span tal:replace="bd/path"/> (<span tal:replace="size"/> <span tal:replace="units"/> - <span tal:replace="bd/pretty_type"/>) - </td> - </tr> - </span> - <tr> - <td colspan="2" - style="height: 100%;"> - - </td> - </tr> - </table> - </td> - <td> - - </td> - </tr> - <tr class="props-form-footer"> - <td colspan="2"> - <table style="width: 100%;"> - <tr> - <td align="left"> - - </td> - <td align="right"> - <input tal:define="go_to_mapper_url python:'./?pagetype=52&mapper_type=' + mapper['mapper_type'] + '&mapper_id=' + mapper['mapper_id'] + '&storagename=' + storagename" - tal:attributes="type string:button; - name string:cancel_button; - value string:Cancel; - onclick python:'window.location.assign(\'' + go_to_mapper_url + '\')'" - class="form_button"/> - <input tal:define="prompt_msg python:'Do you really want to add selected ' + mapper['pretty_sources_name'] + ' to \\\'' + mapper['pretty_name'] + '\\\'?'; - validate_url context/validate_html/absolute_url" - tal:attributes="id add_sources_button_id; - type string:button; - name string:action_type; - value string:Add; - onclick python:'return validate_and_submit_form(\'' + validate_url + '\', \'' + add_sources_form_id + '\', \'' + add_sources_button_id + '\', \'' + prompt_msg + '\')'" - class="form_button"/> - </td> - </tr> - </table> - </td> - </tr> - </table> - </form> + <tr class="props-form-body"> + <td style="height: 100%;"> + <table class="props-inner-table"> + <th colspan="2"> + <span tal:condition="python:len(mapper['new_sources']) == 1"> + Select <span tal:replace="mapper/pretty_source_name"/> to add + </span> + <span tal:condition="python:len(mapper['new_sources']) > 1"> + Select one or more <span tal:replace="mapper/pretty_sources_name"/> to add + </span> + </th> + <tr tal:repeat="bd mapper/new_sources"> + <td> + <input type="checkbox" + tal:attributes="name python:'source_bd_' + bd['path']" /> + </td> + <td tal:define=" + bytes bd/props/size/value; + dummy python:here.bytes_to_value_units(bytes); + size python:dummy[0]; + units python:dummy[1]"> + + <span tal:replace="bd/path" /> (<span tal:replace="size" /> <span tal:replace="units" /> - <span tal:replace="bd/pretty_type" />) + </td> + </tr> + <tr> + <td colspan="2" style="height: 100%;"> + + </td> + </tr> + </table> + </td> + <td> + + </td> + </tr> + <tr class="props-form-footer"> + <td colspan="2"> + <table style="width: 100%;"> + <tr> + <td align="left"> + + </td> + <td align="right"> + <input type="button" name="cancel_button" + value="Cancel" class="form_button" + tal:define=" + go_to_mapper_url python:'./?pagetype=52&mapper_type=' + mapper['mapper_type'] + '&mapper_id=' + mapper['mapper_id'] + '&storagename=' + storagename" + tal:attributes=" + onclick python:'window.location.assign(\'' + go_to_mapper_url + '\')'" /> + + <input type="button" name="action_type" + value="Add" class="form_button" + tal:define=" + prompt_msg python:'Do you really want to add selected ' + mapper['pretty_sources_name'] + ' to \\\'' + mapper['pretty_name'] + '\\\'?'; + validate_url context/validate_html/absolute_url" + tal:attributes=" + id add_sources_button_id; + onclick python:'return validate_and_submit_form(\'' + validate_url + '\', \'' + add_sources_form_id + '\', \'' + add_sources_button_id + '\', \'' + prompt_msg + '\')'" /> + </td> + </tr> + </table> + </td> + </tr> + </table> + </form> </div> <div tal:omit-tag="" metal:define-macro="display-props-tableless"> - <span tal:omit-tag="" - tal:repeat="prop props"> - <tr tal:define="p prop/name; - prop_pr_name prop/pretty_name" - tal:condition="not: prop/hidden"> - <td tal:content="prop_pr_name"/> - <td tal:define="prop_type prop/type; - prop_units prop/units"> - <table> - <tr> - <td> - <span tal:condition="python:prop_type == 'label'"> - <span tal:omit-tag="" - tal:condition="prop/replacements|nothing"> - <input tal:attributes="type string:hidden; - name p; - value prop/value"/> - <select tal:define="repls prop/replacements; - select_id python:prefix + '_select_replace_block_' + p" - tal:attributes="id select_id; - onfocus python:'replace_properties_block__old_select_value = this.value'; - onchange python:'replace_properties_block(\'' + properties_span_id + '\', \'' + select_id + '\')'"> - <span tal:omit-tag="" - tal:repeat="repl_name repls/repl_names"> - <option tal:attributes="value python:repls[repl_name]['path']"/><span tal:replace="repl_name"/> - </span> - </select> - </span> - <span tal:omit-tag="" - tal:condition="not: prop/replacements|nothing"> - <span tal:condition="python: prop_units == 'bytes'"> - <span tal:define="dummy python: here.bytes_to_value_units(prop['value']); - value python: str(dummy[0]) + ' ' + str(dummy[1])" - tal:replace="value"/> - </span> - <span tal:condition="python: prop_units != 'bytes'" - tal:replace="prop/value"/> - </span> - </span> - - - - <input tal:condition="python:prop_type == 'text'" - tal:attributes="name p; - type string:text; - value prop/value; - onkeypress python:'return validate_text_keypress(this, event, 2, \'' + prop['validation']['illegal_chars'] + '\', ' + str(prop['validation']['max_length']) + ')'; - onchange python:'validate_text(this, 2, \'' + prop['validation']['illegal_chars'] + '\', \'' + prop['validation']['reserved_words'] + '\', ' + str(prop['validation']['min_length']) + ', ' + str(prop['validation']['max_length']) + ', \'' + form_submit_button_id + '\')'"/> - - + <tal:block tal:repeat="prop props"> + <tr tal:condition="not: prop/hidden" + tal:define=" + p prop/name; + prop_pr_name prop/pretty_name"> + <td tal:content="prop_pr_name" /> + <td tal:define=" + prop_type prop/type; + prop_units prop/units"> + <table> + <tr> + <td> + <span tal:condition="python:prop_type == 'label'"> + <tal:block tal:condition="prop/replacements|nothing"> + <input type="hidden" + tal:attributes=" + name p; + value prop/value" /> + <select + tal:define=" + repls prop/replacements; + select_id python:prefix + '_select_replace_block_' + p" + tal:attributes=" + id select_id; + onfocus python:'replace_properties_block__old_select_value = this.value'; + onchange python:'replace_properties_block(\'' + properties_span_id + '\', \'' + select_id + '\')'"> + <tal:block tal:repeat="repl_name repls/repl_names"> + <option tal:attributes=" + value python:repls[repl_name]['path']" /> + <span tal:replace="repl_name" /> + </tal:block> + </select> + </tal:block> + + <tal:block tal:condition="not: prop/replacements|nothing"> + <span tal:condition="python: prop_units == 'bytes'"> + <span tal:define=" + dummy python: here.bytes_to_value_units(prop['value']); + value python: str(dummy[0]) + ' ' + str(dummy[1])" + tal:replace="value" /> + </span> + <span tal:condition="python: prop_units != 'bytes'" + tal:replace="prop/value" /> + </tal:block> + </span> - <span tal:omit-tag="" - tal:condition="python:prop_type == 'int' and prop_units != 'bytes'"> - <input tal:attributes="name p; - type string:text; - size string:15; - value prop/value; - onchange python:'validate_int(this, 2, ' + str(prop['validation']['min']) + ', ' + str(prop['validation']['max']) + ', ' + str(prop['validation']['step']) + ', \'' + prop_units + '\', \'' + form_submit_button_id + '\')'" - onkeypress="return validate_int_keypress(this, event, 2)"/> - (<span tal:replace="prop/validation/min"/> - <span tal:replace="prop/validation/max"/>) - <span tal:replace="prop_units"/> - </span> - <span tal:omit-tag="" - tal:condition="python:prop_type == 'int' and prop_units == 'bytes'"> - <span tal:define="bytes prop/value; - dummy python:here.bytes_to_value_prefunits(bytes); - value python:dummy[0]; - units python:dummy[1]; - minim python:here.convert_bytes(prop['validation']['min'], units); - maxim python:here.convert_bytes(prop['validation']['max'], units); - step python:here.convert_bytes(prop['validation']['step'], units)"> - <input tal:attributes="name p; - type string:text; - size string:15; - value value; - onchange python:'validate_float(this, 2, ' + str(minim) + ', ' + str(maxim) + ', ' + str(step) + ', \'' + units + '\', \'' + form_submit_button_id + '\')'" - onkeypress="return validate_float_keypress(this, event, 2)"/> - (<span tal:replace="minim"/> - <span tal:replace="maxim"/>) - <span tal:replace="units"/> - </span> - </span> + <input type="text" + tal:condition="python:prop_type == 'text'" + tal:attributes=" + name p; + value prop/value; + onkeypress python:'return validate_text_keypress(this, event, 2, \'' + prop['validation']['illegal_chars'] + '\', ' + str(prop['validation']['max_length']) + ')'; + onchange python:'validate_text(this, 2, \'' + prop['validation']['illegal_chars'] + '\', \'' + prop['validation']['reserved_words'] + '\', ' + str(prop['validation']['min_length']) + ', ' + str(prop['validation']['max_length']) + ', \'' + form_submit_button_id + '\')'" /> + + <tal:block tal:condition="python:prop_type == 'int' and prop_units != 'bytes'"> + <input type="text" size="15" + tal:attributes=" + name p; + value prop/value; + onchange python:'validate_int(this, 2, ' + str(prop['validation']['min']) + ', ' + str(prop['validation']['max']) + ', ' + str(prop['validation']['step']) + ', \'' + prop_units + '\', \'' + form_submit_button_id + '\')'" + onkeypress="return validate_int_keypress(this, event, 2)" /> + (<span tal:replace="prop/validation/min" /> - <span tal:replace="prop/validation/max" />) <span tal:replace="prop_units" /> + </tal:block> + <tal:block tal:condition="python:prop_type == 'int' and prop_units == 'bytes'"> + <span tal:define=" + bytes prop/value; + dummy python:here.bytes_to_value_prefunits(bytes); + value python:dummy[0]; + units python:dummy[1]; + minim python:here.convert_bytes(prop['validation']['min'], units); + maxim python:here.convert_bytes(prop['validation']['max'], units); + step python:here.convert_bytes(prop['validation']['step'], units)"> + <input type="string" size="15" + tal:attributes=" + name p; + value value; + onchange python:'validate_float(this, 2, ' + str(minim) + ', ' + str(maxim) + ', ' + str(step) + ', \'' + units + '\', \'' + form_submit_button_id + '\')'" + onkeypress="return validate_float_keypress(this, event, 2)" /> + (<span tal:replace="minim" /> - <span tal:replace="maxim" />) <span tal:replace="units" /> + </span> + </tal:block> - <span tal:condition="python:prop_type == 'select'"> - <select tal:define="prop_options prop/value" - tal:attributes="name p"> - <span tal:omit-tag="" - tal:condition="python: prop_units != 'bytes'" - tal:repeat="prop_opt prop_options"> - <option tal:attributes="value prop_opt"/><span tal:replace="prop_opt"/> - </span> - <span tal:omit-tag="" - tal:condition="python: prop_units == 'bytes'" - tal:repeat="prop_opt prop_options"> - <option tal:attributes="value prop_opt"/><span tal:define="dummy python: here.bytes_to_value_units(prop_opt); - value python: str(dummy[0]) + ' ' + str(dummy[1])" - tal:replace="value"/> - </span> - </select> - </span> - </td> - <td> - <span tal:condition="python: prop_units != 'bytes'" - tal:replace="prop_units"/> - </td> - </tr> - </table> - </td> - </tr> - </span> - <tr> - <td colspan="2" style="height: 100%;"> - - </td> - </tr> + <tal:block tal:condition="python:prop_type == 'select'"> + <select tal:define="prop_options prop/value" tal:attributes="name p"> + <tal:block + tal:condition="python: prop_units != 'bytes'" + tal:repeat="prop_opt prop_options"> + <option tal:attributes="value prop_opt" /> + <span tal:replace="prop_opt" /> + </tal:block> + <tal:block + tal:condition="python: prop_units == 'bytes'" + tal:repeat="prop_opt prop_options"> + <option tal:attributes="value prop_opt" /> + <span + tal:define=" + dummy python: here.bytes_to_value_units(prop_opt); + value python: str(dummy[0]) + ' ' + str(dummy[1])" + tal:replace="value" /> + </tal:block> + </select> + </tal:block> + </td> + <td> + <span tal:condition="python: prop_units != 'bytes'" tal:replace="prop_units" /> + </td> + </tr> + </table> + </td> + </tr> + </tal:block> + <tr> + <td colspan="2" style="height: 100%;"> + + </td> + </tr> </div> <div tal:omit-tag="" metal:define-macro="display-props"> @@ -968,7 +943,7 @@ <div metal:define-macro="display-BD"> <div metal:use-macro="here/form-macros/macros/forms-css" /> - <span tal:omit-tag="" + <span tal:omit-tag="" tal:define="mapper string:; conts python:bd_data['contents']; prefix prefix|bd_data/path; @@ -978,9 +953,8 @@ apply_button_id python:prefix + 'apply_button_id'; form_submit_button_id apply_button_id; content_span_id python:prefix + 'content_span_id'"> - <form tal:attributes="id bd_form_id; - method string:get"> + <form method="get" tal:attributes="id bd_form_id"> <input tal:attributes="type string:hidden; name string:pagetype; value string:commit_changes"/> @@ -1089,11 +1063,11 @@ tal:attributes="id select_content_id; name string:content_id; onchange funct"> - <span tal:omit-tag="" - tal:repeat="cont conts"> + <span tal:omit-tag="" tal:repeat="cont conts"> <option tal:attributes="value cont/id"/><span tal:replace="cont/name"/> </span> </select> + <span tal:define="cont python:conts[0]" tal:condition="python:len(conts) == 1"> <input tal:attributes="id select_content_id; @@ -1338,8 +1312,10 @@ value="Reset" onclick="return reset_form(this.form)" class="form_button"/> - <input tal:define="prompt_msg python:'Do you really want to apply changes to ' + mapper['pretty_type'] + ' \\\'' + mapper['pretty_name'] + '\\\'?'; - validate_url context/validate_html/absolute_url" + + <input tal:define=" + prompt_msg python:'Do you really want to apply changes to ' + mapper['pretty_type'] + ' \\\'' + mapper['pretty_name'] + '\\\'?'; + validate_url context/validate_html/absolute_url" tal:attributes="id apply_button_id; type string:button; name string:action_type; --- conga/luci/storage/storage_probing.js 2007/09/25 16:49:36 1.1 +++ conga/luci/storage/storage_probing.js 2007/09/25 22:47:05 1.2 @@ -9,7 +9,9 @@ function strip_left(txt) { for (var i = 0 ; i < txt.length ; i++) { - if (txt[i] == " " || txt[i] == "\n") { + if (txt[i] == ' ' || txt[i] == '\n' || + txt[i] == '\r' || txt[i] == '\t') + { continue; } return txt.substr(i); --- conga/luci/storage/storage_utils.js 2007/09/25 16:49:36 1.1 +++ conga/luci/storage/storage_utils.js 2007/09/25 22:47:05 1.2 @@ -9,7 +9,9 @@ function strip_left(txt) { for (var i = 0 ; i < txt.length ; i++) { - if (txt[i] == " " || txt[i] == "\n") { + if (txt[i] == ' ' || txt[i] == '\n' || + txt[i] == '\r' || txt[i] == '\t') + { continue; } return txt.substr(i); --- conga/luci/storage/storage_validation.js 2007/09/25 16:49:36 1.1 +++ conga/luci/storage/storage_validation.js 2007/09/25 22:47:05 1.2 @@ -305,7 +305,9 @@ function strip_left(txt) { for (var i = 0 ; i < txt.length ; i++) { - if (txt[i] == " " || txt[i] == "\n") { + if (txt[i] == ' ' || txt[i] == '\n' || + txt[i] == '\r' || txt[i] == '\t') + { continue; } return txt.substr(i); @@ -346,7 +348,7 @@ } } - alert(err_msg); + alert(err_msg || 'An unknown error occurred'); } } else { alert("Error retrieving data from server"); --- conga/luci/storage/validate_html 2007/09/25 18:55:13 1.6 +++ conga/luci/storage/validate_html 2007/09/25 22:47:05 1.7 @@ -31,7 +31,7 @@ <tal:block tal:condition="access_to_host_allowed"> <span tal:condition="python:action_type == 'Validate'" - tal:content="python:here.validate(storage_report, request)" /> + tal:replace="python:here.validate(storage_report, request)" /> <tal:block tal:condition="python:action_type != 'Validate'"> This form is to be used for validation only