Commit 030e5738 authored by Sven Franck's avatar Sven Franck

renamed installation, added custom form fields, made request service form

parent efd032cf
...@@ -417,4 +417,16 @@ html body div.ui-panel a.unenhanced:focus, ...@@ -417,4 +417,16 @@ html body div.ui-panel a.unenhanced:focus,
html body div.ui-panel a.unenhanced:hover, html body div.ui-panel a.unenhanced:hover,
html body div.ui-panel a.unenhanced:active { html body div.ui-panel a.unenhanced:active {
background: none repeat scroll 0 center rgba(0, 0, 0, 0); background: none repeat scroll 0 center rgba(0, 0, 0, 0);
}
/* ========================= ugly black status box ======================== */
.progress_notifier {
background: none repeat scroll 0 0 #000000 !important;
border: 0 none;
border-radius: 0.375em;
color: #FFFFFF;
font-weight: bold;
min-height: 2em;
padding: 1em;
text-align: center;
width: 100%;
} }
\ No newline at end of file
{ {
"installation_version": { "service_version": {
"type":"StringField", "type":"StringField",
"widget": { "widget": {
"id": "installation_version", "id": "service_version",
"title": "Version", "title": "Version",
"title_i18n": "portal_type_dict.installation_dict.field_list.version.title", "title_i18n": "portal_type_dict.service_dict.field_list.version.title",
"description": "The version of the software installed on this computer.", "description": "The version of the software installed on this computer.",
"description_i18n": "portal_type_dict.installation_dict.field_list.version.description", "description_i18n": "portal_type_dict.service_dict.field_list.version.description",
"alternate_name": "installation_version", "alternate_name": "service_version",
"default_value": null, "default_value": null,
"css_class": "", "css_class": "",
"hidden": null, "hidden": null,
...@@ -40,15 +40,15 @@ ...@@ -40,15 +40,15 @@
} }
} }
}, },
"installation_title": { "service_title": {
"type":"StringField", "type":"StringField",
"widget": { "widget": {
"id": "installation_title", "id": "service_title",
"title": "Title", "title": "Title",
"title_i18n": "portal_type_dict.installation_dict.field_list.title.title", "title_i18n": "portal_type_dict.service_dict.field_list.title.title",
"description": "The title of the software being installed on this server.", "description": "The title of the software being installed on this server.",
"description_i18n": "portal_type_dict.installation_dict.field_list.title.description", "description_i18n": "portal_type_dict.service_dict.field_list.title.description",
"alternate_name": "installation_title", "alternate_name": "service_title",
"default_value": null, "default_value": null,
"css_class": "", "css_class": "",
"hidden": null, "hidden": null,
...@@ -81,15 +81,15 @@ ...@@ -81,15 +81,15 @@
} }
} }
}, },
"installation_image_type": { "service_image_type": {
"type":"StringField", "type":"StringField",
"widget": { "widget": {
"id": "installation_image_type", "id": "service_image_type",
"title": "Type", "title": "Type",
"title_i18n": "portal_type_dict.installation_dict.field_list.image_type.title", "title_i18n": "portal_type_dict.service_dict.field_list.image_type.title",
"description": "Type of Image (Icon/Image).", "description": "Type of Image (Icon/Image).",
"description_i18n": "portal_type_dict.installation_dict.field_list.image_type.description", "description_i18n": "portal_type_dict.service_dict.field_list.image_type.description",
"alternate_name": "installation_image_type", "alternate_name": "service_image_type",
"default_value": null, "default_value": null,
"css_class": null, "css_class": null,
"hidden": null, "hidden": null,
...@@ -122,15 +122,15 @@ ...@@ -122,15 +122,15 @@
} }
} }
}, },
"installation_image_url": { "service_image_url": {
"type":"ImageField", "type":"ImageField",
"widget": { "widget": {
"id": "installation_image_url", "id": "service_image_url",
"title": "Image", "title": "Image",
"title_i18n": "portal_type_dict.installation_dict.field_list.image_url.title", "title_i18n": "portal_type_dict.service_dict.field_list.image_url.title",
"description": "The path to the icon/image for this software service.", "description": "The path to the icon/image for this software service.",
"description_i18n": "portal_type_dict.installation_dict.field_list.image_url.description", "description_i18n": "portal_type_dict.service_dict.field_list.image_url.description",
"alternate_name": "installation_image_url", "alternate_name": "service_image_url",
"default_value": null, "default_value": null,
"css_class": null, "css_class": null,
"hidden": null, "hidden": null,
...@@ -167,15 +167,15 @@ ...@@ -167,15 +167,15 @@
} }
} }
}, },
"installation_status": { "service_status": {
"type":"StringField", "type":"StringField",
"widget": { "widget": {
"id": "installation_status", "id": "service_status",
"title": "Status", "title": "Status",
"title_i18n": "portal_type_dict.installation_dict.field_list.status.title", "title_i18n": "portal_type_dict.service_dict.field_list.status.title",
"description": "The status of the software being installed on this server.", "description": "The status of the software being installed on this server.",
"description_i18n": "portal_type_dict.installation_dict.field_list.status.description", "description_i18n": "portal_type_dict.service_dict.field_list.status.description",
"alternate_name": "installation_status", "alternate_name": "service_status",
"default_value": null, "default_value": null,
"css_class": null, "css_class": null,
"hidden": null, "hidden": null,
...@@ -208,15 +208,15 @@ ...@@ -208,15 +208,15 @@
} }
} }
}, },
"installation_usage": { "service_usage": {
"type":"StringField", "type":"StringField",
"widget": { "widget": {
"id": "installation_usage", "id": "service_usage",
"title": "Usage", "title": "Usage",
"title_i18n": "portal_type_dict.installation_dict.field_list.usage.title", "title_i18n": "portal_type_dict.service_dict.field_list.usage.title",
"description": "The usage of this software.", "description": "The usage of this software.",
"description_i18n": "portal_type_dict.installation_dict.field_list.usage.description", "description_i18n": "portal_type_dict.service_dict.field_list.usage.description",
"alternate_name": "installation_usage", "alternate_name": "service_usage",
"default_value": null, "default_value": null,
"css_class": null, "css_class": null,
"hidden": null, "hidden": null,
...@@ -249,15 +249,15 @@ ...@@ -249,15 +249,15 @@
} }
} }
}, },
"installation_id": { "service_id": {
"type":"StringField", "type":"StringField",
"widget": { "widget": {
"id": "installation_id", "id": "service_id",
"title": "ID", "title": "ID",
"title_i18n": "portal_type_dict.installation_dict.field_list.id.title", "title_i18n": "portal_type_dict.service_dict.field_list.id.title",
"description": "The id of this installation.", "description": "The id of this installation.",
"description_i18n": "portal_type_dict.installation_dict.field_list.id.description", "description_i18n": "portal_type_dict.service_dict.field_list.id.description",
"alternate_name": "installation_id", "alternate_name": "service_id",
"default_value": null, "default_value": null,
"css_class": null, "css_class": null,
"hidden": null, "hidden": null,
...@@ -290,15 +290,15 @@ ...@@ -290,15 +290,15 @@
} }
} }
}, },
"installation_timestamp": { "service_timestamp": {
"type":"DateTimeField", "type":"DateTimeField",
"widget": { "widget": {
"id": "installation_timestamp", "id": "service_timestamp",
"title": "ID", "title": "ID",
"title_i18n": "portal_type_dict.installation_dict.field_list.timestamp.title", "title_i18n": "portal_type_dict.service_dict.field_list.timestamp.title",
"description": "The timestamp this installation was made.", "description": "The timestamp this installation was made.",
"description_i18n": "portal_type_dict.installation_dict.field_list.timestamp.description", "description_i18n": "portal_type_dict.service_dict.field_list.timestamp.description",
"alternate_name": "installation_timestamp", "alternate_name": "service_timestamp",
"default_value": null, "default_value": null,
"css_class": null, "css_class": null,
"hidden": null, "hidden": null,
...@@ -331,15 +331,15 @@ ...@@ -331,15 +331,15 @@
} }
} }
}, },
"installation_reference_computer": { "service_reference_computer": {
"type":"StringField", "type":"StringField",
"widget": { "widget": {
"id": "installation_reference_computer", "id": "service_reference_computer",
"title": "Computer", "title": "Computer",
"title_i18n": "portal_type_dict.installation_dict.field_list.computer.title", "title_i18n": "portal_type_dict.service_dict.field_list.computer.title",
"description": "The computer this installation is made on.", "description": "The computer this installation is made on.",
"description_i18n": "portal_type_dict.installation_dict.field_list.computer.description", "description_i18n": "portal_type_dict.service_dict.field_list.computer.description",
"alternate_name": "installation_reference_computer", "alternate_name": "service_reference_computer",
"default_value": null, "default_value": null,
"css_class": null, "css_class": null,
"hidden": null, "hidden": null,
...@@ -372,15 +372,15 @@ ...@@ -372,15 +372,15 @@
} }
} }
}, },
"installation_reference_release": { "service_reference_release": {
"type":"StringField", "type":"StringField",
"widget": { "widget": {
"id": "installation_reference_release", "id": "service_reference_release",
"title": "Release", "title": "Release",
"title_i18n": "portal_type_dict.installation_dict.field_list.release.title", "title_i18n": "portal_type_dict.service_dict.field_list.release.title",
"description": "The release being this installation is based on.", "description": "The release being this installation is based on.",
"description_i18n": "portal_type_dict.installation_dict.field_list.release.description", "description_i18n": "portal_type_dict.service_dict.field_list.release.description",
"alternate_name": "installation_reference_release", "alternate_name": "service_reference_release",
"default_value": null, "default_value": null,
"css_class": null, "css_class": null,
"hidden": null, "hidden": null,
...@@ -413,15 +413,15 @@ ...@@ -413,15 +413,15 @@
} }
} }
}, },
"installation_xml_recipe": { "service_xml_recipe": {
"type": "TextareaField", "type": "TextareaField",
"widget": { "widget": {
"id": "installation_xml_recipe", "id": "service_xml_recipe",
"title": "Parameter XML", "title": "Parameter XML",
"title_i18n": "portal_type_dict.person_dict.field_list.recipe.title", "title_i18n": "portal_type_dict.person_dict.field_list.recipe.title",
"description": "The XML recipe for this software installation.", "description": "The XML recipe for this software installation.",
"description_i18n": "portal_type_dict.person_dict.field_list.recipe.description", "description_i18n": "portal_type_dict.person_dict.field_list.recipe.description",
"alternate_name": "installation_xml_recipe", "alternate_name": "service_xml_recipe",
"default_value": null, "default_value": null,
"css_class": null, "css_class": null,
"hidden": null, "hidden": null,
......
{ {
"portal_type_source": "Installation", "portal_type_source": "Service",
"portal_type_title": "installation", "portal_type_title": "service",
"portal_type_fields": "installation_fieldlist", "portal_type_fields": "service_fieldlist",
"initial_query": {"include_docs": true, "limit":[0,16]}, "initial_query": {"include_docs": true, "limit":[0,16]},
"form": true, "form": true,
"id": "installation_overview", "id": "service_overview",
"property_dict": { "property_dict": {
"initial_query_url_identifier": "installation_reference_computer", "initial_query_url_identifier": "service_reference_computer",
"dynamic_children": [1], "dynamic_children": [1],
"wrap_gadget": 2, "wrap_gadget": 2,
"layout": { "layout": {
"header": [ "header": [
[ [
{"custom": true, "text": "Image", "text_i18n": "portal_type_dict.installation_dict.field_list.image_url.title", "show": true, "priority": 4}, {"custom": true, "text": "Image", "text_i18n": "portal_type_dict.service_dict.field_list.image_url.title", "show": true, "priority": 4},
{"column": "installation_title", "show": true, "priority": 1}, {"column": "service_title", "show": true, "priority": 1},
{"column": "installation_version", "show": true, "priority": 1}, {"column": "service_version", "show": true, "priority": 1},
{"column": "installation_usage", "show": true, "priority": 5} {"column": "service_usage", "show": true, "priority": 5}
] ]
], ],
"body": [ "body": [
{"column": "installation_image_url", "show": true, "priority": 4, "image": true}, {"column": "service_image_url", "show": true, "priority": 4, "image": true},
{"column": "installation_title", "show": true, "priority": 1}, {"column": "service_title", "show": true, "priority": 1},
{"column": "installation_version", "show": true, "priority": 1}, {"column": "service_version", "show": true, "priority": 1},
{"column": "installation_usage", "show": true, "priority": 5} {"column": "service_usage", "show": true, "priority": 5}
], ],
"footer": [] "footer": []
}, },
......
[ [
{ {
"installation_version":"slapos-0.92", "service_version":"slapos-0.92",
"installation_title": "[EXPERIMENTAL] KVM", "service_title": "[EXPERIMENTAL] KVM",
"installation_image_type": "image", "service_image_type": "image",
"installation_image_url":"https://www.slapos.org/software_product_module/2/default_image?quality=75&display=thumbnail", "service_image_url":"https://www.slapos.org/software_product_module/2/default_image?quality=75&display=thumbnail",
"installation_status": "", "service_status": "",
"installation_usage": "", "service_usage": "",
"installation_id": "", "service_id": "",
"installation_timestamp": "2013/12/24", "service_timestamp": "2013/12/24",
"installation_reference_release": "2845497", "service_reference_release": "2845497",
"installation_reference_computer": "", "service_reference_computer": "",
"installation_xml_recipe": "<?xml version='1.0' encoding='utf-8'?>\n<instance>\n</instance>" "service_xml_recipe": "<?xml version='1.0' encoding='utf-8'?>\n<instance>\n</instance>"
}, },
{ {
"installation_version":"[EXPERIMENTAL] SlapOS Web Runner", "service_version":"[EXPERIMENTAL] SlapOS Web Runner",
"installation_title": "SlapOS Web Runner (Master Development)", "service_title": "SlapOS Web Runner (Master Development)",
"installation_image_type": "image", "service_image_type": "image",
"installation_image_url":"https://www.slapos.org/software_product_module/20110316-88D7/default_image?quality=75&amp;display=thumbnail", "service_image_url":"https://www.slapos.org/software_product_module/20110316-88D7/default_image?quality=75&amp;display=thumbnail",
"installation_status": "", "service_status": "",
"installation_usage": "", "service_usage": "",
"installation_id": "", "service_id": "",
"installation_timestamp": "2013/12/23", "service_timestamp": "2013/12/23",
"installation_reference_release": "1657159", "service_reference_release": "1657159",
"installation_reference_computer": "", "service_reference_computer": "",
"installation_xml_recipe": "<?xml version='1.0' encoding='utf-8'?>\n<instance>\n</instance>" "service_xml_recipe": "<?xml version='1.0' encoding='utf-8'?>\n<instance>\n</instance>"
}, },
{ {
"installation_version":"slapos-0.141", "service_version":"slapos-0.141",
"installation_title": "Kumofs Branch Development", "service_title": "Kumofs Branch Development",
"installation_image_type": "image", "service_image_type": "image",
"installation_image_url":"https://www.slapos.org/software_product_module/20110615-176F8/default_image?quality=75&amp;display=thumbnail", "service_image_url":"https://www.slapos.org/software_product_module/20110615-176F8/default_image?quality=75&amp;display=thumbnail",
"installation_status": "", "service_status": "",
"installation_usage": "", "service_usage": "",
"installation_id": "", "service_id": "",
"installation_timestamp": "2013/12/22", "service_timestamp": "2013/12/22",
"installation_reference_release": "8516098", "service_reference_release": "8516098",
"installation_reference_computer": "", "service_reference_computer": "",
"installation_xml_recipe": "<?xml version='1.0' encoding='utf-8'?>\n<instance>\n</instance>" "service_xml_recipe": "<?xml version='1.0' encoding='utf-8'?>\n<instance>\n</instance>"
}, },
{ {
"installation_version":"slapos-0.96", "service_version":"slapos-0.96",
"installation_title": "Zabbix Agent", "service_title": "Zabbix Agent",
"installation_image_type": "image", "service_image_type": "image",
"installation_image_url":"https://www.slapos.org/software_product_module/20110613-107B5/default_image?quality=75&amp;display=thumbnail", "service_image_url":"https://www.slapos.org/software_product_module/20110613-107B5/default_image?quality=75&amp;display=thumbnail",
"installation_status": "", "service_status": "",
"installation_usage": "", "service_usage": "",
"installation_id": "", "service_id": "",
"installation_timestamp": "2013/12/22", "service_timestamp": "2013/12/22",
"installation_reference_release": "3105599", "service_reference_release": "3105599",
"installation_reference_computer": "", "service_reference_computer": "",
"installation_xml_recipe": "<?xml version='1.0' encoding='utf-8'?>\n<instance>\n</instance>" "service_xml_recipe": "<?xml version='1.0' encoding='utf-8'?>\n<instance>\n</instance>"
} }
] ]
\ No newline at end of file
...@@ -245,14 +245,14 @@ ...@@ -245,14 +245,14 @@
} }
} }
}, },
"subscription_image_url": { "release_image_url": {
"type":"ImageField", "type":"ImageField",
"widget": { "widget": {
"id": "subscription_image_url", "id": "subscription_image_url",
"title": "Image", "title": "Image",
"title_i18n": "portal_type_dict.subscription_dict.field_list.image_url.title", "title_i18n": "portal_type_dict.release_dict.field_list.image_url.title",
"description": "The path to the icon/image for this software service.", "description": "The path to the icon/image for this software service.",
"description_i18n": "portal_type_dict.subscription_dict.field_list.image_url.description", "description_i18n": "portal_type_dict.release_dict.field_list.image_url.description",
"alternate_name": "subscription_image_url", "alternate_name": "subscription_image_url",
"default_value": null, "default_value": null,
"css_class": null, "css_class": null,
...@@ -289,5 +289,54 @@ ...@@ -289,5 +289,54 @@
"i18n": "validation_dict.too_much_input" "i18n": "validation_dict.too_much_input"
} }
} }
},
"release_detail_description": {
"type": "TextareaField",
"widget": {
"id": "release_detail_description",
"title": "Detailed Description",
"title_i18n": "portal_type_dict.release_dict.field_list.detail.title",
"description": "The detailed description of this service.",
"description_i18n": "portal_type_dict.release_dict.field_list.detail.description",
"alternate_name": "release_detail_description",
"css_class": null,
"hidden": null,
"width":null,
"height":null,
"extra":null
},
"properties": {
"enabled": true,
"editable": true,
"external_validator": null,
"required": null,
"preserve_whitespace": null,
"unicode": null,
"maximum_lines": null,
"maximum_length_of_line": null,
"maximum_characters": null
},
"message": {
"external_validator_failed": {
"message": "The input failed the external validator.",
"i18n": "validation_dict.external"
},
"required_not_found": {
"message": "Input required but not found.",
"i18n": "validation_dict.required"
},
"too_many_lines": {
"message": "You have entered too many lines.",
"i18n": "validation_dict.too_many_lines"
},
"line_too_long": {
"message": "One or more lines you have entered are too long.",
"i18n": "validation_dict.too_long_lines"
},
"too_long": {
"message": "You have entered too many characters.",
"i18n": "validation_dict.too_many_chars"
}
}
} }
} }
\ No newline at end of file
{ {
"portal_type_source": "Installation", "portal_type_source": "Software Release",
"portal_type_title": "installation", "portal_type_title": "release",
"portal_type_fields": "installation_fieldlist", "portal_type_fields": "release_fieldlist",
"initial_query": {"include_docs": true, "limit":[0,1]}, "initial_query": {"include_docs": true, "limit":[0,1]},
"form": true, "form": true,
"id": "install_release", "id": "install_release",
"property_dict": { "property_dict": {
"dynamic_children": [0], "dynamic_children": [1],
"requires_authentication": true, "requires_authentication": true,
"depends_on": "login_state" "depends_on": "login_state"
}, },
"children": [ "children": [
{ {
"type": "p",
"direct": {"className": "translate"},
"attributes": {"data-i18n": "page_dict.release.configure"},
"logic": {"text": "Please select the computer to install this instance on (and specify and optional recipe)."}
},{
"generate": "widget", "generate": "widget",
"type": "form", "type": "form",
"class_list": "responsive", "class_list": "responsive",
...@@ -35,33 +30,38 @@ ...@@ -35,33 +30,38 @@
}, },
"children": [ "children": [
{"type": "input", "direct": {"value": "Reset", "className": "translate"}, "attributes": {"type": "reset", "data-i18n":"[value]global_dict.common_dict.cancel"}}, {"type": "input", "direct": {"value": "Reset", "className": "translate"}, "attributes": {"type": "reset", "data-i18n":"[value]global_dict.common_dict.cancel"}},
{"type": "input", "direct": {"value": "Install", "className": "action translate"}, "attributes": {"type": "submit", "data-action":"add", "data-i18n":"[value]global_dict.common_dict.install", "data-theme": "slapos-black"}} {"type": "input", "direct": {"value": "Request", "className": "action translate"}, "attributes": {"type": "submit", "data-action":"install", "data-i18n":"[value]global_dict.common_dict.request", "data-theme": "slapos-black"}}
] ]
}], }],
"layout": [ "layout": [
{ {
"position": "center", "position": "center",
"fieldlist": [ "fieldlist": [
{"title": "installation_status", "overrides": {"widget": {"css_class":"progress_notifier"}}} {"type": "input", "direct": {"disabled": true, "className":"progress_notifier", "id": "release_instance_status", "value": "Preparing instance..."}, "attributes": {"data-i18n":"[value]page_dict.services.prepare_instance"}}
] ]
}, },
{ {
"position": "left", "position": "left",
"fieldlist": [ "fieldlist": [
{"title": "installation_id", "overrides": {"setValue": "instance_", "properties": {"editable":false}}}, {"title": "release_title", "overrides": {"properties": {"required": true, "editable":false}}},
{"title": "installation_version"}, {"title": "release_version", "overrides": {"properties": {"required": true, "editable":false}}},
{"title": "installation_title"}, {"type": "input", "direct": {"id":"release_instance_id", "className": "required"}, "attributes": {"data-enhanced":"true", "type":"text", "readonly": true}, "logic":{"setValue": "instance_", "label":"Instance ID", "label_i18n":"page_dict.services.instance_id"}},
{"title": "installation_xml_recipe", "overrides": {"widget": {"default_value": "<?xml version='1.0' encoding='utf-8'?>\n<instance>\n</instance>"}}} {"type":"select", "direct":{"id":"release_reference_computer", "className": "required"},"attributes": {"data-enhanced": "true"},"logic": {"label":"Request for Computer", "label_i18n":"page_dict.services.instance_server", "options":[{"value":"", "text": "", "selected": "true"}, {"value": "Cortana", "text": "Cortana"},{"value": "Prof. Simon Wright", "text": "Prof. Simon Wright"},{"value": "HAL", "text": "HAL"},{"value": "Computer", "text": "Computer"},{"value": "Lawnmower", "text": "Lawnmower"}]}},
{"type":"select", "direct":{"id":"release_reference_network", "className": "required"},"attributes": {"data-enhanced": "true"},"logic": {"label":"Request for Network", "label_i18n":"page_dict.services.instance_network", "options":[{"value":"", "text": "", "selected": "true"}, {"value": "Foo-Net", "text": "Foo-Net"},{"value": "Bar-Net", "text": "Bar-Net"},{"value": "Lawn", "text": "Lawn"}]}}
] ]
},{ },
{
"position": "right", "position": "right",
"fieldlist": [ "fieldlist": [
{"title": "installation_image_url"} {"title": "release_image_url"},
{"title": "release_image_url", "overrides": {"type": "StringField", "widget": {"hidden": true}}},
{"title": "release_detail_description", "overrides": {"properties": {"required": true, "editable":false}}}
] ]
}, { },
"position": "left", {
"position": "center",
"fieldlist": [ "fieldlist": [
{"title": "installation_reference_computer"} {"type": "textarea", "direct": {"id": "release_instance_recipe", "className": "required", "value": "<?xml version='1.0' encoding='utf-8'?>\n<instance>\n</instance>"}, "attributes": {"data-enhanced":"true"}, "logic": {"label":"Instance Configuration", "label_i18n":"page_dict.services.instance_recipe"}}
] ]
} }
] ]
......
This diff is collapsed.
This diff is collapsed.
{ {
"portal_type_source": "Software Release", "portal_type_source": "Service",
"portal_type_title": "release", "portal_type_title": "service",
"portal_type_fields": "release_fieldlist", "portal_type_fields": "service_fieldlist",
"initial_query": {"include_docs": true, "limit":[0,16]}, "initial_query": {"include_docs": true, "limit":[0,16]},
"form": true, "form": true,
"id": "release_overview", "id": "service_overview",
"property_dict": { "property_dict": {
"initial_query_url_identifier": "release_reference_id", "initial_query_url_identifier": "service_reference_computer",
"dynamic_children": [0], "dynamic_children": [1],
"wrap_gadget": 2, "wrap_gadget": 2,
"layout": { "layout": {
"header": [ "header": [
[ [
{"column": "release_title", "show": true, "priority": 1}, {"custom": true, "text": "Image", "text_i18n": "portal_type_dict.service_dict.field_list.image_url.title", "show": true, "priority": 4},
{"column": "release_version", "show": true, "priority": 1}, {"column": "service_title", "show": true, "priority": 1},
{"column": "release_description", "show": true, "priority": 5} {"column": "service_version", "show": true, "priority": 1},
{"column": "service_usage", "show": true, "priority": 5}
] ]
], ],
"body": [ "body": [
{"column": "release_title", "show": true, "priority": 1}, {"column": "service_image_url", "show": true, "priority": 4, "image": true},
{"column": "release_version", "show": true, "priority": 1}, {"column": "service_title", "show": true, "priority": 1},
{"column": "release_description", "show": true, "priority": 5} {"column": "service_version", "show": true, "priority": 1},
{"column": "service_usage", "show": true, "priority": 5}
], ],
"footer": [] "footer": []
}, },
"feature_dict": { "feature_dict": {
"linkable": true, "linkable": true,
"link_identifier": null "link_identifier": "id"
} }
}, },
"children": [{ "children": [{
"type": "a",
"direct": {"className":"translate ui-btn ui-icon-edit ui-btn-icon-left ui-corner-all ui-btn-inline ui-btn-slapos-black ui-link", "href": "#services::add"},
"attributes": {
"data-i18n": "page_dict.services.add",
"data-icon": "edit"
},
"logic": {"text":"Install new software"}
},{
"generate": "widget", "generate": "widget",
"type": "table", "type": "table",
"class_list": "table-stroke ui-responsive", "class_list": "table-stroke ui-responsive",
......
[
{
"service_version":"slapos-0.92",
"service_title": "[EXPERIMENTAL] KVM",
"service_image_type": "image",
"service_image_url":"https://www.slapos.org/software_product_module/2/default_image?quality=75&amp;display=thumbnail",
"service_status": "",
"service_usage": "",
"service_id": "",
"service_timestamp": "2013/12/24",
"service_reference_release": "2845497",
"service_reference_computer": "",
"service_xml_recipe": "<?xml version='1.0' encoding='utf-8'?>\n<instance>\n</instance>"
},
{
"service_version":"[EXPERIMENTAL] SlapOS Web Runner",
"service_title": "SlapOS Web Runner (Master Development)",
"service_image_type": "image",
"service_image_url":"https://www.slapos.org/software_product_module/20110316-88D7/default_image?quality=75&amp;display=thumbnail",
"service_status": "",
"service_usage": "",
"service_id": "",
"service_timestamp": "2013/12/23",
"service_reference_release": "1657159",
"service_reference_computer": "",
"service_xml_recipe": "<?xml version='1.0' encoding='utf-8'?>\n<instance>\n</instance>"
},
{
"service_version":"slapos-0.141",
"service_title": "Kumofs Branch Development",
"service_image_type": "image",
"service_image_url":"https://www.slapos.org/software_product_module/20110615-176F8/default_image?quality=75&amp;display=thumbnail",
"service_status": "",
"service_usage": "",
"service_id": "",
"service_timestamp": "2013/12/22",
"service_reference_release": "8516098",
"service_reference_computer": "",
"service_xml_recipe": "<?xml version='1.0' encoding='utf-8'?>\n<instance>\n</instance>"
},
{
"service_version":"slapos-0.96",
"service_title": "Zabbix Agent",
"service_image_type": "image",
"service_image_url":"https://www.slapos.org/software_product_module/20110613-107B5/default_image?quality=75&amp;display=thumbnail",
"service_status": "",
"service_usage": "",
"service_id": "",
"service_timestamp": "2013/12/22",
"service_reference_release": "3105599",
"service_reference_computer": "",
"service_xml_recipe": "<?xml version='1.0' encoding='utf-8'?>\n<instance>\n</instance>"
}
]
\ No newline at end of file
...@@ -22,8 +22,8 @@ ...@@ -22,8 +22,8 @@
{ {
"generate": "gadget", "generate": "gadget",
"type": "listgrid", "type": "listgrid",
"id": "subscription_select", "id": "subscription_overview",
"href": "subscription_select" "href": "subscription_overview"
} }
] ]
} }
...@@ -38,8 +38,8 @@ ...@@ -38,8 +38,8 @@
{ {
"generate": "gadget", "generate": "gadget",
"type": "listbox", "type": "listbox",
"id": "release_select", "id": "release_overview",
"href": "release_select" "href": "release_overview"
} }
] ]
} }
......
{
"portal_type_source": "Software Product",
"portal_type_title": "subscription",
"portal_type_fields": "subscription_fieldlist",
"initial_query": {"include_docs": true, "limit":[0,8]},
"form": true,
"id": "subscription_select",
"property_dict": {
"link": true,
"link_identifier": "id",
"dynamic_children": [1]
},
"children": [{
"generate": "widget",
"type": "controlbar",
"class_list": "responsive",
"children": [
{"type": "input", "direct": {"id":"search_subscription_list", "className": "translate"}, "attributes": {"data-action":"search", "data-enhanced":"true", "data-i18n": "[placeholder]page_dict.software.search","placeholder":"Search available software", "data-icon":"search", "data-action-btn":"true", "data-type":"search", "type":"search"}, "logic":{"clear":"true", "action":"search"}},
{"type": "div", "direct": {"className":"info"}, "attributes": {"data-info":"records"}},
{"type": "div", "direct": {"className":"info"}, "attributes": {"data-info":"selected"}},
{"type": "div", "direct": {"className":"info"}, "attributes": {"data-info":"filter"}},
{"type": "div", "direct": {"className":"info"}, "attributes": {"data-info":"sorted"}}
]
}, {
"generate":"widget",
"type": "listview",
"class_list": "",
"theme": "slapos-white",
"property_dict": {
"inset":"true",
"filter": "true",
"input": "#search_subscription_list"
},
"children": []
}, {
"generate":"widget",
"type": "controlbar",
"class_list": "responsive",
"children": [{
"generate": "widget",
"type": "controlgroup",
"class_list": "pagination",
"property_dict": {
"direction": "horizontal"
},
"children": [
{"type": "a", "direct":{"className":"action", "href":""}, "attributes":{"data-i18n":"global_dict.pagination_dict.first", "data-action":"first", "data-icon":"step-backward", "data-iconpos":"notext"}, "logic": {"text":"First"}},
{"type": "a", "direct":{"className":"action", "href":""}, "attributes":{"data-i18n":"global_dict.pagination_dict.previous", "data-action":"prev", "data-icon":"backward", "data-iconpos":"notext"}, "logic": {"text":"Step Backward"}},
{"type":"select", "direct":{"id":"paginate_subscription_list", "className":"action"},"attributes": {"data-icon":"reorder", "data-action":"limit", "data-iconpos":"notext"},"logic": {"options":[{"value": "16", "text": "16", "text_i18n":"global_dict.pagination_dict.16"},{"value": "32", "text": "32", "text_i18n":"global_dict.pagination_dict.32"},{"value": "64", "text": "64", "text_i18n":"global_dict.pagination_dict.64"}, {"value": "128", "text": "128", "text_i18n":"global_dict.pagination_dict.128"}]}},
{"type": "a", "direct":{"className":"action", "href":""}, "attributes":{"data-i18n":"global_dict.pagination_dict.next", "data-action":"next", "data-icon":"forward", "data-iconpos":"notext"}, "logic": {"text":"Step Forward"}},
{"type": "a", "direct":{"className":"action", "href":""}, "attributes":{"data-i18n":"global_dict.pagination_dict.last", "data-action":"last", "data-icon":"step-forward", "data-iconpos":"notext"}, "logic": {"text": "Last"}}
]
}]
}]
}
...@@ -27,6 +27,14 @@ ...@@ -27,6 +27,14 @@
**/ **/
map.actions = { map.actions = {
/**
* Create an installation
* @method installa
**/
"install": function () {
util.error({"error":"install: Nothing defined"});
},
/** /**
* Look up single value from dict * Look up single value from dict
* @method translateLookup * @method translateLookup
...@@ -760,7 +768,7 @@ ...@@ -760,7 +768,7 @@
// the mapping from (ERP5) custom API to internal API here // the mapping from (ERP5) custom API to internal API here
"mapFormField": function (spec, overrides, passed_value) { "mapFormField": function (spec, overrides, passed_value) {
var validation_list, class_list, element, type, prevail, clear, config, var validation_list, class_list, element, type, prevail, clear, config,
field_value; field_value, skip, use_type, textarea_value;
// build config object // build config object
config = {}; config = {};
...@@ -782,6 +790,7 @@ ...@@ -782,6 +790,7 @@
} }
if (spec !== undefined) { if (spec !== undefined) {
textarea_value = null;
field_value = passed_value || (prevail.widget.default_value === "0" ? field_value = passed_value || (prevail.widget.default_value === "0" ?
"0" : prevail.widget.default_value) || "0" : prevail.widget.default_value) ||
spec.widget.default_value || undefined; spec.widget.default_value || undefined;
...@@ -832,8 +841,23 @@ ...@@ -832,8 +841,23 @@
// unknown selection? // unknown selection?
// type overwritten (only used for imageField so far)
if (prevail.type) {
use_type = prevail.type;
} else {
use_type = spec.type;
}
// type-related validation, element and type definition // type-related validation, element and type definition
switch (spec.type) { switch (use_type) {
case "ImageField":
config = {
"type": "img",
"direct": {"src": field_value, "alt": ""},
"logic": {"skip": true}
};
skip = true;
break;
case "StringField": case "StringField":
case "RelationStringField": case "RelationStringField":
case "IntegerField": case "IntegerField":
...@@ -878,6 +902,8 @@ ...@@ -878,6 +902,8 @@
"|maximum_length_of_line:" + "|maximum_length_of_line:" +
(prevail.properties.maximum_length_of_line || (prevail.properties.maximum_length_of_line ||
spec.properties.maximum_length_of_line); spec.properties.maximum_length_of_line);
textarea_value = field_value;
field_value = null;
break; break;
case "EmailField": case "EmailField":
validation_list += "|type:email"; validation_list += "|type:email";
...@@ -887,13 +913,19 @@ ...@@ -887,13 +913,19 @@
break; break;
} }
// for image fields, exit early
// TODO: do we really want that?
if (skip) {
return config;
}
if (validation_list === "") { if (validation_list === "") {
validation_list = undefined; validation_list = undefined;
} }
// construct config // construct config
// NOTE: type is always set in attributes, because it can be null // NOTE: type (checkbox, radio...) set in attributes, because can be
// on select/textarea // null on select/textarea
config.type = element; config.type = element;
config.direct = { config.direct = {
"id": (prevail.widget.id || spec.widget.id), "id": (prevail.widget.id || spec.widget.id),
...@@ -917,6 +949,7 @@ ...@@ -917,6 +949,7 @@
"disabled": (prevail.properties.enabled || spec.properties.enabled) ? "disabled": (prevail.properties.enabled || spec.properties.enabled) ?
undefined : true, undefined : true,
"value": field_value, "value": field_value,
"text": textarea_value,
"readonly": (prevail.properties.editable === false || "readonly": (prevail.properties.editable === false ||
spec.properties.editable === false) ? true : undefined, spec.properties.editable === false) ? true : undefined,
"options": (prevail.widget.items || spec.widget.items) ? "options": (prevail.widget.items || spec.widget.items) ?
...@@ -1432,7 +1465,8 @@ ...@@ -1432,7 +1465,8 @@
target = document.createDocumentFragment(); target = document.createDocumentFragment();
if ((answer.data && answer.data.total_rows === 0) || if (
//(answer.data && answer.data.total_rows === 0) ||
(answer.data === undefined && answer.request_new === undefined)) { (answer.data === undefined && answer.request_new === undefined)) {
target.appendChild(app.noItemsFound()); target.appendChild(app.noItemsFound());
} else { } else {
...@@ -2165,7 +2199,7 @@ ...@@ -2165,7 +2199,7 @@
factory.form = function (spec) { factory.form = function (spec) {
var i, j, k, layout, element, container, area, field, overrides, var i, j, k, layout, element, container, area, field, overrides,
position, doc, config, value, stamp, sauce, encode, secure, position, doc, config, value, stamp, sauce, encode, secure,
safety_box, fragment, wrap, item_id; safety_box, fragment, wrap, item_id, input_config;
fragment = factory.util.wrapInForm(spec); fragment = factory.util.wrapInForm(spec);
secure = spec.property_dict.secure; secure = spec.property_dict.secure;
...@@ -2270,14 +2304,30 @@ ...@@ -2270,14 +2304,30 @@
} }
} }
// loop fieldlist of layout section
for (j = 0; j < layout.fieldlist.length; j += 1) { for (j = 0; j < layout.fieldlist.length; j += 1) {
field = layout.fieldlist[j]; field = layout.fieldlist[j];
config = spec.fields[field.title]; // allow non-fieldlist form elements to be generated
overrides = field.overrides; // TODO: can we also generate a field from another portal_type here?
doc = spec.data || undefined; if (field.type) {
input_config = field;
// make sure value is set correctly
if (input_config.logic && input_config.logic.setValue) {
input_config.direct.value = input_config.logic.setValue +
util.generateUuid();
}
} else {
config = spec.fields[field.title];
overrides = field.overrides;
doc = spec.data || undefined;
value = doc ? (doc[field.title]) : undefined;
// map config to what we need
input_config = map.utils.mapFormField(config, overrides, value);
}
value = doc ? (doc[field.title]) : undefined;
switch (j) { switch (j) {
case 0: case 0:
...@@ -2293,13 +2343,23 @@ ...@@ -2293,13 +2343,23 @@
position = undefined; position = undefined;
break; break;
} }
// generate and append
container.appendChild(factory.formElement( if (input_config.logic && input_config.logic.skip) {
map.utils.mapFormField(config, overrides, value), container.appendChild(factory.element(
true, input_config.type,
true, input_config.direct,
position input_config.attributes || {},
)); input_config.logic || {}
));
} else {
// generate and append
container.appendChild(factory.formElement(
input_config,
true,
true,
position
));
}
} }
fragment.appendChild(container); fragment.appendChild(container);
} }
...@@ -3488,8 +3548,10 @@ ...@@ -3488,8 +3548,10 @@
} }
// hidden // hidden
// TODO: we should not have to clear here, should be done in mapFormField
if (config.attributes.type === "hidden") { if (config.attributes.type === "hidden") {
hidden_field = true; hidden_field = true;
delete config.logic.clear;
} }
// mask // mask
...@@ -3579,7 +3641,9 @@ ...@@ -3579,7 +3641,9 @@
} }
// clear textarea type=null if set // clear textarea type=null if set
if (config.type === "textarea") { if (config.type === "textarea") {
config.direct.className += mask;
delete config.attributes.type; delete config.attributes.type;
} }
...@@ -3588,9 +3652,7 @@ ...@@ -3588,9 +3652,7 @@
disabled + readonly + (action || "") + (clear || "") + (theme || ""); disabled + readonly + (action || "") + (clear || "") + (theme || "");
// container // container
if (config.type === "textarea" || if (config.type === "textarea" || hidden_field || config.logic.plain_element) {
hidden_field ||
config.logic.plain_element) {
container = wrapper; container = wrapper;
} else { } else {
wrap_in_container = true; wrap_in_container = true;
......
...@@ -36,7 +36,8 @@ ...@@ -36,7 +36,8 @@
"cancel": "Cancel", "cancel": "Cancel",
"register": "Register", "register": "Register",
"create": "Create Instance", "create": "Create Instance",
"install": "Install" "install": "Install",
"request": "Request"
}, },
"export_dict": { "export_dict": {
"download": "Download" "download": "Download"
...@@ -103,11 +104,16 @@ ...@@ -103,11 +104,16 @@
"subtitle": "Server instances being used" "subtitle": "Server instances being used"
}, },
"services": { "services": {
"add": "Install new software", "add": "Add Service",
"install": "Install Release", "install": "Install Release",
"select": "Select Release", "select": "Select Release",
"title": "Services", "title": "Services",
"subtitle": "Administration of Installed Software" "subtitle": "Administration of Installed Software",
"prepare_instance": "Preparing Instance...",
"instance_id": "Instance ID",
"instance_recipe": "Instance Configuration",
"instance_server": "Computer",
"instance_network": "Network"
}, },
"networks": { "networks": {
"no_servers": "No servers associated with this network.", "no_servers": "No servers associated with this network.",
...@@ -184,23 +190,23 @@ ...@@ -184,23 +190,23 @@
} }
} }
}, },
"installation_dict": { "service_dict": {
"field_list": { "field_list": {
"recipe": { "recipe": {
"title": "XML Parameters", "title": "XML Parameters",
"description": "The xml configuration for this installation instance." "description": "The xml configuration for this service instance."
}, },
"computer": { "computer": {
"title": "Computer", "title": "Computer",
"description": "The computer this installation is made on." "description": "The computer this service is made on."
}, },
"release": { "release": {
"title": "Release", "title": "Release",
"description": "The release being this installation is based on." "description": "The release being this service is based on."
}, },
"timestamp": { "timestamp": {
"title": "Timestamp", "title": "Timestamp",
"description": "Data and time this installation was made." "description": "Data and time this service was made."
}, },
"version": { "version": {
"title": "Version", "title": "Version",
...@@ -228,7 +234,7 @@ ...@@ -228,7 +234,7 @@
}, },
"id": { "id": {
"title": "ID", "title": "ID",
"description": "The id of this software installation." "description": "The id of this software service."
} }
} }
}, },
...@@ -510,6 +516,10 @@ ...@@ -510,6 +516,10 @@
"title": "Description", "title": "Description",
"description": "The description of the software release." "description": "The description of the software release."
}, },
"detail": {
"title": "Detail Description",
"description": "The detailed description of this service."
},
"version": { "version": {
"title": "Version", "title": "Version",
"description": "The version of the software release." "description": "The version of the software release."
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment