Commit d3b66663 authored by Sven Franck's avatar Sven Franck

added help section, new ticket working, update ticket missing action

parent 7510c06e
...@@ -6,11 +6,44 @@ ...@@ -6,11 +6,44 @@
{ {
"generate": "widget", "generate": "widget",
"type": "page", "type": "page",
"title": "Help", "title": "Support",
"title_i18n": "global_dict.help", "title_i18n": "portal_type_dict.ticket_dict.text_dict.help",
"theme": "slapos-white", "theme": "slapos-white",
"view_dict": { "view_dict": {
"default": [] "default": [
{
"generate":"gadget",
"type": "listbox",
"href": "ticket_overview"
}
],
"new": [
{
"generate": "gadget",
"type": "fieldlist",
"href": "ticket_new"
}
]
}
}, {
"generate": "widget",
"type": "page",
"title": "Ticket",
"title_i18n": "portal_type_dict.ticket_dict.text_dict.ticket",
"theme": "slapos-white",
"view_dict": {
"default": [
{
"generate": "gadget",
"type": "listbox",
"href": "ticket_status"
},
{
"generate": "gadget",
"type": "fieldlist",
"href": "ticket_update"
}
]
} }
} }
] ]
......
{
"title": {
"type": "StringField",
"widget": {
"id": "title",
"title": "Title",
"title_i18n": "portal_type_dict.ticket_dict.field_dict.title.title",
"description": "The name of the ticket.",
"description_i18n": "portal_type_dict.ticket_dict.field_dict.title.description",
"alternate_name": "title",
"default_value": null,
"css_class": null,
"hidden": false,
"display_width": 30,
"maximum_input": null,
"extra": {"data-clear-btn":"true"}
},
"properties": {
"enabled": true,
"editable": true,
"external_validator": null,
"required": true,
"preserve_whitespace": null,
"unicode": null,
"maximum_length": null,
"truncate": null
},
"messages": {
"external_validator_failed": {
"message": "The input failed the external validator.",
"i18n": "validation_dict.external"
},
"required_not_found": {
"message": "Input is required but no input given.",
"i18n": "validation_dict.required"
},
"too_long": {
"message":"Too much input given.",
"i18n": "validation_dict.too_much_input"
}
}
},
"reference": {
"type": "StringField",
"widget": {
"id": "reference",
"title": "Reference",
"title_i18n": "portal_type_dict.ticket_dict.field_dict.reference.title",
"description": "The reference number for this ticket.",
"description_i18n": "portal_type_dict.ticket_dict.field_dict.reference.description",
"alternate_name": "reference",
"default_value": null,
"css_class": null,
"hidden": false,
"display_width": 30,
"maximum_input": null,
"extra": {"data-clear-btn":"true"}
},
"properties": {
"enabled": true,
"editable": true,
"external_validator": null,
"required": true,
"preserve_whitespace": null,
"unicode": null,
"maximum_length": null,
"truncate": null
},
"messages": {
"external_validator_failed": {
"message": "The input failed the external validator.",
"i18n": "validation_dict.external"
},
"required_not_found": {
"message": "Input is required but no input given.",
"i18n": "validation_dict.required"
},
"too_long": {
"message":"Too much input given.",
"i18n": "validation_dict.too_much_input"
}
}
},
"translated_validation_state_title": {
"type": "StringField",
"widget": {
"id": "translated_validation_state_title",
"title": "Status",
"title_i18n": "portal_type_dict.ticket_dict.field_dict.status.title",
"description": "The current status of this ticket.",
"description_i18n": "portal_type_dict.ticket_dict.field_dict.status.description",
"alternate_name": "translated_validation_state_title",
"default_value": null,
"css_class": null,
"hidden": false,
"display_width": 30,
"maximum_input": null,
"extra": {"data-clear-btn":"true"}
},
"properties": {
"enabled": true,
"editable": true,
"external_validator": null,
"required": true,
"preserve_whitespace": null,
"unicode": null,
"maximum_length": null,
"truncate": null
},
"messages": {
"external_validator_failed": {
"message": "The input failed the external validator.",
"i18n": "validation_dict.external"
},
"required_not_found": {
"message": "Input is required but no input given.",
"i18n": "validation_dict.required"
},
"too_long": {
"message":"Too much input given.",
"i18n": "validation_dict.too_much_input"
}
}
},
"resource": {
"type": "ListField",
"widget": {
"id": "resource",
"title": "Type",
"title_i18n": "portal_type_dict.ticket_dict.field_dict.resource.title",
"description": "The type of this ticket",
"description_i18n": "portal_type_dict.ticket_dict.field_dict.resource.description",
"alternate_name": "resource",
"default_value": null,
"css_class": null,
"hidden": false,
"size": 1,
"items": "getTicketType",
"select_first_item": true,
"extra_per_item": null,
"extra": null
},
"properties": {
"enabled": true,
"editable": true,
"external_validator": null,
"required": null,
"preserve_whitespace": null,
"unicode": null
},
"messages": {
"external_validator_failed": {
"message": "The input failed the external validator.",
"i18n": "validation_dict.external"
},
"required_not_found": {
"message": "Input is required but no input given.",
"i18n": "validation_dict.required"
},
"unknown_selection": {
"message":"You selected on option not on the menu",
"i18n": "validation_dict.option_not_available"
}
}
},
"description": {
"type":"TextareaField",
"widget": {
"id": "description",
"title": "Message",
"title_i18n": "portal_type_dict.ticket_dict.field_dict.description.title",
"description": "The message to be sent.",
"description_i18n": "portal_type_dict.ticket_dict.field_dict.description.description",
"alternate_name": "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"
}
}
},
"date": {
"type":"DateTimeField",
"widget": {
"id": "date",
"title": "Date",
"title_i18n": "portal_type_dict.ticket_dict.field_dict.date.title",
"description": "The date the message was posted.",
"description_i18n": "portal_type_dict.ticket_dict.field_dict.date.description",
"alternate_name": "date",
"default_value": null,
"css_class": null,
"hidden": null,
"default_to_know": null,
"data_separator": null,
"time_separator": null,
"input_style": null,
"input_order": null,
"display_date_only": true,
"am_pm time style": null,
"display_timezone": null,
"hide_day": null,
"hidden_day_is_last_day_of_the_month": null
},
"properties": {
"enabled": true,
"editable": true,
"external_validator": null,
"required": true,
"start_datetime": null,
"end_datetime": null,
"allow_empty_datetime": null
},
"message": {
"external_validator_failed": {
"message": "The input failed the external validator.",
"i18n": "validation.fail.external"
},
"required_not_found": {
"message": "Input required but not found.",
"i18n": "validation.fail.required"
},
"not_datetime": {
"message": "You did not enter a valid datetime",
"i18n": "validation.fail.not_valid_datetime"
},
"datetime_out_of_range": {
"message": "The date and time you entered are out of range",
"i18n":"validation.fail.out_of_range_datetime"
}
}
},
"user": {
"type": "StringField",
"widget": {
"id": "title",
"title": "User",
"title_i18n": "portal_type_dict.ticket_dict.field_dict.user.title",
"description": "The user who posted this ticket/message",
"description_i18n": "portal_type_dict.ticket_dict.field_dict.user.description",
"alternate_name": "title",
"default_value": null,
"css_class": null,
"hidden": false,
"display_width": 30,
"maximum_input": null,
"extra": {"data-clear-btn":"true"}
},
"properties": {
"enabled": true,
"editable": true,
"external_validator": null,
"required": true,
"preserve_whitespace": null,
"unicode": null,
"maximum_length": null,
"truncate": null
},
"messages": {
"external_validator_failed": {
"message": "The input failed the external validator.",
"i18n": "validation_dict.external"
},
"required_not_found": {
"message": "Input is required but no input given.",
"i18n": "validation_dict.required"
},
"too_long": {
"message":"Too much input given.",
"i18n": "validation_dict.too_much_input"
}
}
}
}
\ No newline at end of file
{
"portal_type_source": "Ticket",
"portal_type_title": "ticket",
"portal_type_fields": "ticket_fieldlist",
"form": true,
"view": "web_view",
"property_dict": {
"dynamic_children": [0],
"requires_authentication": true,
"depends_on": "login_state",
"wrap_gadget": 2,
"submit_to": "#help"
},
"scheme": [
{
"position": "left",
"fieldlist": [
{"field": "title"},
{"field": "resource"},
{"field": "description"}
]
},
{
"position": "right",
"fieldlist": []
}
],
"children": [{
"generate": "widget",
"type": "form",
"class_list": "responsive",
"property_dict": {
"editable": true,
"secure": "default",
"secret_hash": "foo",
"public_key": "6Ldpb-oSAAAAAGwriKpk4ol1n4yjN_as6M4xv0zA"
},
"children": [{
"generate": "widget",
"type": "controlgroup",
"class_list": "center",
"property_dict": {
"direction": "horizontal"
},
"children": [
{"type": "input", "direct": {"value": "Add", "className": "action translate"}, "attributes": {"type": "submit", "data-action":"add_ticket", "data-icon":"check", "data-i18n":"[value]portal_type_dict.ticket_dict.text_dict.generate", "data-theme": "slapos-black"}}
]
}]
}
]
}
{
"portal_type_source": "Ticket",
"portal_type_title": "ticket",
"portal_type_fields": "ticket_fieldlist",
"portal_type_mapper": "ticketing",
"initial_query": {"include_docs": true, "limit":[0,8]},
"form": true,
"view": "web_view",
"property_dict": {
"initial_query_url_identifier": "_id",
"dynamic_children": [1],
"requires_authentication": true,
"depends_on": "login_state",
"wrap_gadget": 2,
"link": true,
"link_identifier": "_id",
"editable": null,
"sortable": true,
"caption": {
"slot": 1,
"text": "Current Tickets",
"text_i18n": "portal_type_dict.ticket_dict.text_dict.current_tickets"
},
"pagination": {
"slot": 2,
"option_list": [
{"value": "8", "text": "8", "text_i18n":"portal_type_dict.ticket_dict.text_dict.8"},
{"value": "16", "text": "16", "text_i18n":"portal_type_dict.ticket_dict.text_dict.16"},
{"value": "32", "text": "32", "text_i18n":"portal_type_dict.ticket_dict.text_dict.32"},
{"value": "64", "text": "64", "text_i18n":"portal_type_dict.ticket_dict.text_dict.64"}
]
}
},
"scheme": [
{
"position": "header",
"fieldlist": [
{"field": "reference", "show": true, "priority": 4},
{"field": "title", "show": true, "priority": 1, "sort": true},
{"field": "translated_validation_state_title", "show": "true", "priority": 4}
]
},
{
"position": "body",
"fieldlist": [
{"field": "reference", "show": true, "priority": 4},
{"field": "title", "show": true, "priority": 1, "sort": true},
{"field": "translated_validation_state_title", "show": "true", "priority": 4}
]
}
],
"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": "#help/new"},
"attributes": {
"data-i18n": "portal_type_dict.ticket_dict.text_dict.add",
"data-icon": "edit"
},
"logic": {"text":"New Ticket"}
}, {
"generate": "widget",
"type": "table",
"class_list": "table-stroke ui-responsive",
"property_dict": {
"mode": "columntoggle",
"toggle_popup": false,
"wrap": "both",
"top_grid": 1,
"bottom_grid": 1
},
"children": []
}]
}
{
"portal_type_source": "Ticket",
"portal_type_title": "ticket",
"portal_type_fields": "ticket_fieldlist",
"portal_type_mapper": "ticket_status",
"initial_query": {"include_docs": true, "limit":[0,8]},
"form": true,
"view": "web_view",
"property_dict": {
"initial_query_url_identifier": "_id",
"dynamic_children": [0],
"requires_authentication": true,
"depends_on": "login_state",
"wrap_gadget": 2,
"link": true,
"link_identifier": "_id",
"editable": null,
"caption": {
"slot": 1,
"text": "Current Tickets",
"text_i18n": "portal_type_dict.ticket_dict.text_dict.current_tickets"
},
"pagination": {
"slot": 2,
"option_list": [
{"value": "8", "text": "8", "text_i18n":"portal_type_dict.ticket_dict.text_dict.8"},
{"value": "16", "text": "16", "text_i18n":"portal_type_dict.ticket_dict.text_dict.16"},
{"value": "32", "text": "32", "text_i18n":"portal_type_dict.ticket_dict.text_dict.32"},
{"value": "64", "text": "64", "text_i18n":"portal_type_dict.ticket_dict.text_dict.64"}
]
}
},
"scheme": [
{
"position": "header",
"fieldlist": [
{"field": "user", "show": true, "priority": 4},
{"field": "date", "show": true, "priority": 1},
{"field": "description", "show": "true", "priority": 2}
]
},
{
"position": "body",
"fieldlist": [
{"field": "user", "show": true, "priority": 4},
{"field": "date", "show": true, "priority": 1},
{"field": "description", "show": "true", "priority": 2}
]
}
],
"children": [{
"generate": "widget",
"type": "table",
"class_list": "table-stroke ui-responsive",
"property_dict": {
"mode": "columntoggle",
"toggle_popup": false,
"wrap": "both",
"top_grid": 1,
"bottom_grid": 1
},
"children": []
}]
}
{
"portal_type_source": "Ticket",
"portal_type_title": "ticket",
"portal_type_fields": "ticket_fieldlist",
"initial_query": {"include_docs": true, "limit":[0,1]},
"form": true,
"view": "web_view",
"property_dict": {
"initial_query_url_identifier": "_id",
"dynamic_children": [0],
"requires_authentication": true,
"depends_on": "login_state",
"wrap_gadget": 2,
"submit_to": "#help"
},
"scheme": [
{
"position": "left",
"fieldlist": [
{"field": "description"}
]
},
{
"position": "right",
"fieldlist": []
}
],
"children": [{
"generate": "widget",
"type": "form",
"class_list": "responsive",
"property_dict": {
"editable": true,
"secure": "default",
"secret_hash": "foo",
"public_key": "6Ldpb-oSAAAAAGwriKpk4ol1n4yjN_as6M4xv0zA"
},
"children": [{
"generate": "widget",
"type": "controlgroup",
"class_list": "center",
"property_dict": {
"direction": "horizontal"
},
"children": [
{"type": "input", "direct": {"value": "Update", "className": "action translate"}, "attributes": {"type": "submit", "data-action":"update_ticket", "data-icon":"check", "data-i18n":"[value]portal_type_dict.ticket_dict.text_dict.update", "data-theme": "slapos-black"}}
]
}]
}
]
}
...@@ -20,6 +20,15 @@ ...@@ -20,6 +20,15 @@
map = {}; map = {};
map.options = { map.options = {
"getTicketType": function () {
return [
{"text": "", "text_i18n":null, "class":"translate", "value":""},
{"text": "Acknowledgement", "text_i18n":null, "class":"translate", "value":"service_module/slapos_crm_acknowledgement"},
{"text": "Complaint", "text_i18n":null, "class":"translate", "value":"service_module/slapos_crm_complaint"},
{"text": "Information", "selected": true, "text_i18n":null, "class":"translate", "value":"service_module/slapos_crm_information"},
{"text": "Spam", "text_i18n":null, "class":"translate", "value":"service_module/slapos_crm_spam"}
];
},
"getAllocationScope": function () { "getAllocationScope": function () {
return [ return [
{"text": "", "text_i18n":null, "class":"translate", "value":""}, {"text": "", "text_i18n":null, "class":"translate", "value":""},
...@@ -649,6 +658,109 @@ ...@@ -649,6 +658,109 @@
return (reply); return (reply);
}, },
/**
* @method ticketing
* @param {object} reply Object received from previous chain element
* @param {object} response Object object passed on to next element
**/
"ticketing": function (reply) {
var config, property, query, href, i, reply, pass = reply.pass;
if (storage) {
config = {
"url": storage.items.dict.url,
"type": "GET",
"data": JSON.stringify({"_id":""})
};
// access storage
return jIO.util.ajax(config)
.then(function(response) {
return jIO.util.ajax({
"url": util.parse(response.target.responseText)._links.me.href
});
}).then(function (answer) {
reply = util.parse(answer.target.responseText)._links.slapos_jump;
for (i = 0; i < reply.length; i += 1) {
if (reply[i].name === "current_ticket") {
query = reply[i]._query;
}
}
if (query === undefined) {
query = reply.href;
}
if (pass.config.initial_query === undefined) {
pass.config.initial_query = {};
}
pass.config.initial_query.skip_type = true;
pass.config.initial_query.query = query;
// pass hacked query back into chain
if (reply.response) {
return {
"response": util.parse(reply.response),
"pass": pass
};
}
return {
"pass": pass
}
}).fail(util.error);
}
return (reply);
},
/**
* @method ticket_status
* @param {object} reply Object received from previous chain element
* @param {object} response Object object passed on to next element
**/
"ticket_status": function (reply) {
var config, property, query, href, i, reply, pass = reply.pass;
if (storage) {
config = {
"url": storage.items.dict.url,
"type": "GET",
"data": JSON.stringify({"_id":""})
};
// access storage
return jIO.util.ajax(config)
.then(function(response) {
return jIO.util.ajax({
"url": util.parse(response.target.responseText)._links.me.href
});
}).then(function (answer) {
console.log(util.parse(answer.target.responseText))
// reply = util.parse(answer.target.responseText)._links.slapos_jump;
// for (i = 0; i < reply.length; i += 1) {
// if (reply[i].name === "current_ticket") {
// query = reply[i]._query;
// }
// }
// if (query === undefined) {
// query = reply.href;
// }
// if (pass.config.initial_query === undefined) {
// pass.config.initial_query = {};
// }
// pass.config.initial_query.skip_type = true;
// pass.config.initial_query.query = query;
// // pass hacked query back into chain
// if (reply.response) {
// return {
// "response": util.parse(reply.response),
// "pass": pass
// };
// }
// return {
// "pass": pass
// }
}).fail(util.error);
}
return (reply);
},
/** /**
* @method subscriptions * @method subscriptions
* @param {object} reply Object received from previous chain element * @param {object} reply Object received from previous chain element
...@@ -1093,7 +1205,6 @@ ...@@ -1093,7 +1205,6 @@
* @param {string} identifier * @param {string} identifier
**/ **/
"download": function (obj) { "download": function (obj) {
console.log(obj)
util.loader("", "status_dict.downloading"); util.loader("", "status_dict.downloading");
storage["items"].get({"_id": obj.element.href.split("/").pop()},{"_view": "web_view"}) storage["items"].get({"_id": obj.element.href.split("/").pop()},{"_view": "web_view"})
...@@ -1410,6 +1521,18 @@ ...@@ -1410,6 +1521,18 @@
storage.add(obj); storage.add(obj);
}, },
/**
* Add a server
* @method submit
* @param {object} obj Action Object
**/
"add_ticket": function (obj) {
obj.gadget.state.create_new = true;
obj.gadget.state.force_formdata = true;
obj.gadget.state.url_pointer = "request_ticket";
storage.add(obj);
},
/** /**
* Add a server * Add a server
* @method submit * @method submit
...@@ -2652,7 +2775,6 @@ ...@@ -2652,7 +2775,6 @@
if (update) { if (update) {
content.appendChild(no_content(props.no_items)); content.appendChild(no_content(props.no_items));
} else { } else {
console.log(content)
content.querySelector("tbody").appendChild(no_content(props.no_items)); content.querySelector("tbody").appendChild(no_content(props.no_items));
} }
} }
......
...@@ -228,6 +228,52 @@ ...@@ -228,6 +228,52 @@
} }
} }
}, },
"ticket_dict": {
"text_dict": {
"update": "Update",
"submit": "Add",
"help": "Support",
"support": "Support",
"ticket": "Ticket",
"current_tickets": "Current Tickets",
"8":"8",
"16": "16",
"32": "32",
"64": "64",
"add": "New ticket",
"generate": "Add"
},
"field_dict": {
"title": {
"title": "Title",
"description": "The title of this ticket."
},
"reference": {
"title": "Reference",
"description": "The reference identifier for this ticket."
},
"date": {
"title": "Date",
"description": "The date this message was posted."
},
"user": {
"title": "User",
"description": "The user who posted this ticket/message."
},
"status": {
"title": "Status",
"description": "The status of this ticket."
},
"resource": {
"title": "Type",
"description": "The type of this ticket."
},
"description": {
"title": "Message",
"description": "The message of this ticket"
}
}
},
"computer_dict": { "computer_dict": {
"text_dict": { "text_dict": {
"crt": "computer.crt", "crt": "computer.crt",
......
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