Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
erp5
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Kasra Jamshidi
erp5
Commits
2fc492f4
Commit
2fc492f4
authored
Apr 23, 2012
by
Aurel
Browse files
Options
Browse Files
Download
Plain Diff
CRM forms improvement
parents
e9b89041
75608ac2
Changes
28
Show whitespace changes
Inline
Side-by-side
Showing
28 changed files
with
1583 additions
and
47 deletions
+1583
-47
bt5/erp5_crm/PortalTypeTemplateItem/portal_types/Acknowledgement.xml
...m/PortalTypeTemplateItem/portal_types/Acknowledgement.xml
+4
-0
bt5/erp5_crm/PortalTypeTemplateItem/portal_types/Fax%20Message.xml
...crm/PortalTypeTemplateItem/portal_types/Fax%20Message.xml
+4
-0
bt5/erp5_crm/PortalTypeTemplateItem/portal_types/Mail%20Message.xml
...rm/PortalTypeTemplateItem/portal_types/Mail%20Message.xml
+4
-0
bt5/erp5_crm/PortalTypeTemplateItem/portal_types/Phone%20Call.xml
..._crm/PortalTypeTemplateItem/portal_types/Phone%20Call.xml
+4
-0
bt5/erp5_crm/PortalTypeTemplateItem/portal_types/Support%20Request.xml
...PortalTypeTemplateItem/portal_types/Support%20Request.xml
+4
-0
bt5/erp5_crm/PortalTypeTemplateItem/portal_types/Visit.xml
bt5/erp5_crm/PortalTypeTemplateItem/portal_types/Visit.xml
+4
-0
bt5/erp5_crm/PortalTypeTemplateItem/portal_types/Web%20Message.xml
...crm/PortalTypeTemplateItem/portal_types/Web%20Message.xml
+4
-0
bt5/erp5_crm/SkinTemplateItem/portal_skins/erp5_crm/Base_addEvent.xml
.../SkinTemplateItem/portal_skins/erp5_crm/Base_addEvent.xml
+23
-14
bt5/erp5_crm/SkinTemplateItem/portal_skins/erp5_crm/Base_viewAddEventDialog.xml
...ateItem/portal_skins/erp5_crm/Base_viewAddEventDialog.xml
+3
-0
bt5/erp5_crm/SkinTemplateItem/portal_skins/erp5_crm/Base_viewAddEventDialog/your_destination.xml
...ins/erp5_crm/Base_viewAddEventDialog/your_destination.xml
+134
-0
bt5/erp5_crm/SkinTemplateItem/portal_skins/erp5_crm/Base_viewAddEventDialog/your_keep_draft.xml
...kins/erp5_crm/Base_viewAddEventDialog/your_keep_draft.xml
+96
-0
bt5/erp5_crm/SkinTemplateItem/portal_skins/erp5_crm/Base_viewAddEventDialog/your_source.xml
...al_skins/erp5_crm/Base_viewAddEventDialog/your_source.xml
+134
-0
bt5/erp5_crm/SkinTemplateItem/portal_skins/erp5_crm/Event_createFollowUpTicket.xml
...Item/portal_skins/erp5_crm/Event_createFollowUpTicket.xml
+24
-8
bt5/erp5_crm/SkinTemplateItem/portal_skins/erp5_crm/Event_newFollowUpTicket.xml
...ateItem/portal_skins/erp5_crm/Event_newFollowUpTicket.xml
+8
-3
bt5/erp5_crm/SkinTemplateItem/portal_skins/erp5_crm/Event_viewCreateTicketWorkflowActionDialog.xml
...s/erp5_crm/Event_viewCreateTicketWorkflowActionDialog.xml
+5
-0
bt5/erp5_crm/SkinTemplateItem/portal_skins/erp5_crm/Event_viewCreateTicketWorkflowActionDialog/additionnal_javascript.xml
...eateTicketWorkflowActionDialog/additionnal_javascript.xml
+368
-0
bt5/erp5_crm/SkinTemplateItem/portal_skins/erp5_crm/Event_viewCreateTicketWorkflowActionDialog/your_follow_up_campaign_resource.xml
...WorkflowActionDialog/your_follow_up_campaign_resource.xml
+149
-0
bt5/erp5_crm/SkinTemplateItem/portal_skins/erp5_crm/Event_viewCreateTicketWorkflowActionDialog/your_follow_up_meeting_resource.xml
...tWorkflowActionDialog/your_follow_up_meeting_resource.xml
+149
-0
bt5/erp5_crm/SkinTemplateItem/portal_skins/erp5_crm/Event_viewCreateTicketWorkflowActionDialog/your_follow_up_sale_opportunity_resource.xml
...ActionDialog/your_follow_up_sale_opportunity_resource.xml
+149
-0
bt5/erp5_crm/SkinTemplateItem/portal_skins/erp5_crm/Event_viewCreateTicketWorkflowActionDialog/your_follow_up_support_request_resource.xml
...wActionDialog/your_follow_up_support_request_resource.xml
+144
-0
bt5/erp5_crm/SkinTemplateItem/portal_skins/erp5_crm/Event_viewCreateTicketWorkflowActionDialog/your_follow_up_ticket_title.xml
...icketWorkflowActionDialog/your_follow_up_ticket_title.xml
+28
-0
bt5/erp5_crm/SkinTemplateItem/portal_skins/erp5_crm/Event_viewStartWorkflowActionDialog/your_warning_message.xml
...nt_viewStartWorkflowActionDialog/your_warning_message.xml
+16
-1
bt5/erp5_crm/SkinTemplateItem/portal_skins/erp5_crm/Ticket_getArrowItemList.xml
...ateItem/portal_skins/erp5_crm/Ticket_getArrowItemList.xml
+9
-6
bt5/erp5_crm/SkinTemplateItem/portal_skins/erp5_crm/Ticket_getResourceItemList.xml
...Item/portal_skins/erp5_crm/Ticket_getResourceItemList.xml
+8
-5
bt5/erp5_crm/SkinTemplateItem/portal_skins/erp5_crm/Ticket_newEvent.xml
...kinTemplateItem/portal_skins/erp5_crm/Ticket_newEvent.xml
+10
-9
bt5/erp5_crm/SkinTemplateItem/portal_skins/erp5_crm/Ticket_viewNewEventDialog.xml
...eItem/portal_skins/erp5_crm/Ticket_viewNewEventDialog.xml
+1
-0
bt5/erp5_crm/SkinTemplateItem/portal_skins/erp5_crm/Ticket_viewNewEventDialog/your_keep_draft.xml
...ns/erp5_crm/Ticket_viewNewEventDialog/your_keep_draft.xml
+96
-0
bt5/erp5_crm/bt/revision
bt5/erp5_crm/bt/revision
+1
-1
No files found.
bt5/erp5_crm/PortalTypeTemplateItem/portal_types/Acknowledgement.xml
View file @
2fc492f4
...
@@ -73,6 +73,10 @@
...
@@ -73,6 +73,10 @@
<key>
<string>
title
</string>
</key>
<key>
<string>
title
</string>
</key>
<value>
<string></string>
</value>
<value>
<string></string>
</value>
</item>
</item>
<item>
<key>
<string>
type_class
</string>
</key>
<value>
<string>
Acknowledgement
</string>
</value>
</item>
</dictionary>
</dictionary>
</pickle>
</pickle>
</record>
</record>
...
...
bt5/erp5_crm/PortalTypeTemplateItem/portal_types/Fax%20Message.xml
View file @
2fc492f4
...
@@ -80,6 +80,10 @@
...
@@ -80,6 +80,10 @@
<key>
<string>
title
</string>
</key>
<key>
<string>
title
</string>
</key>
<value>
<string></string>
</value>
<value>
<string></string>
</value>
</item>
</item>
<item>
<key>
<string>
type_class
</string>
</key>
<value>
<string>
Event
</string>
</value>
</item>
</dictionary>
</dictionary>
</pickle>
</pickle>
</record>
</record>
...
...
bt5/erp5_crm/PortalTypeTemplateItem/portal_types/Mail%20Message.xml
View file @
2fc492f4
...
@@ -80,6 +80,10 @@
...
@@ -80,6 +80,10 @@
<key>
<string>
title
</string>
</key>
<key>
<string>
title
</string>
</key>
<value>
<string></string>
</value>
<value>
<string></string>
</value>
</item>
</item>
<item>
<key>
<string>
type_class
</string>
</key>
<value>
<string>
Event
</string>
</value>
</item>
</dictionary>
</dictionary>
</pickle>
</pickle>
</record>
</record>
...
...
bt5/erp5_crm/PortalTypeTemplateItem/portal_types/Phone%20Call.xml
View file @
2fc492f4
...
@@ -80,6 +80,10 @@
...
@@ -80,6 +80,10 @@
<key>
<string>
title
</string>
</key>
<key>
<string>
title
</string>
</key>
<value>
<string></string>
</value>
<value>
<string></string>
</value>
</item>
</item>
<item>
<key>
<string>
type_class
</string>
</key>
<value>
<string>
Event
</string>
</value>
</item>
</dictionary>
</dictionary>
</pickle>
</pickle>
</record>
</record>
...
...
bt5/erp5_crm/PortalTypeTemplateItem/portal_types/Support%20Request.xml
View file @
2fc492f4
...
@@ -75,6 +75,10 @@
...
@@ -75,6 +75,10 @@
<key>
<string>
title
</string>
</key>
<key>
<string>
title
</string>
</key>
<value>
<string></string>
</value>
<value>
<string></string>
</value>
</item>
</item>
<item>
<key>
<string>
type_class
</string>
</key>
<value>
<string>
Ticket
</string>
</value>
</item>
</dictionary>
</dictionary>
</pickle>
</pickle>
</record>
</record>
...
...
bt5/erp5_crm/PortalTypeTemplateItem/portal_types/Visit.xml
View file @
2fc492f4
...
@@ -80,6 +80,10 @@
...
@@ -80,6 +80,10 @@
<key>
<string>
title
</string>
</key>
<key>
<string>
title
</string>
</key>
<value>
<string></string>
</value>
<value>
<string></string>
</value>
</item>
</item>
<item>
<key>
<string>
type_class
</string>
</key>
<value>
<string>
Event
</string>
</value>
</item>
</dictionary>
</dictionary>
</pickle>
</pickle>
</record>
</record>
...
...
bt5/erp5_crm/PortalTypeTemplateItem/portal_types/Web%20Message.xml
View file @
2fc492f4
...
@@ -80,6 +80,10 @@
...
@@ -80,6 +80,10 @@
<key>
<string>
title
</string>
</key>
<key>
<string>
title
</string>
</key>
<value>
<string></string>
</value>
<value>
<string></string>
</value>
</item>
</item>
<item>
<key>
<string>
type_class
</string>
</key>
<value>
<string>
Event
</string>
</value>
</item>
</dictionary>
</dictionary>
</pickle>
</pickle>
</record>
</record>
...
...
bt5/erp5_crm/SkinTemplateItem/portal_skins/erp5_crm/Base_addEvent.xml
View file @
2fc492f4
...
@@ -99,22 +99,31 @@ elif direction == \'incoming\':\n
...
@@ -99,22 +99,31 @@ elif direction == \'incoming\':\n
else:\n
else:\n
raise NotImplementedError, \'The specified direction is not handled: %r\' % (direction,)\n
raise NotImplementedError, \'The specified direction is not handled: %r\' % (direction,)\n
\n
\n
event_kw = {
}
\n
event_kw = {\n
event_kw[\'portal_type\'] = portal_type
\n
\'portal_type\' : portal_type,
\n
event_kw[\'title\'] = title
\n
\'title\' : title,
\n
event_kw[\'resource\'] = resource
\n
\'resource\' : resource,
\n
event_kw[\'source\'] = source_url
\n
\'source\' : source_url,
\n
event_kw[\'source_section\'] = source_section_url
\n
\'source_section\' : source_section_url,
\n
event_kw[\'destination\'] = destination_url
\n
\'destination\' : destination_url,
\n
event_kw[\'destination_section\'] = destination_section_url
\n
\'destination_section\' : destination_section_url,
\n
event_kw[\'start_date\'] = start_date
\n
\'start_date\' : start_date,
\n
event_kw[\'follow_up\'] = follow_up
\n
\'follow_up\' : follow_up,
\n
event_kw[\'text_content\'] = text_content
\n
\'text_content\' : text_content,
\n
event_kw[\'content_type\'] = portal.portal_preferences.getPreferredTextEditor() and \'text/html\' or \'text/plain\'
\n
\'content_type\' : portal.portal_preferences.getPreferredTextEditor() and \'text/html\' or \'text/plain\',
\n
\n
}
\n
# Create event\n
# Create event\n
module = portal.getDefaultModule(portal_type=portal_type)\n
module = portal.getDefaultModule(portal_type=portal_type)\n
event = module.newContent(**event_kw)\n
event = module.newContent(**event_kw)\n
if not keep_draft:\n
if direction == \'incoming\':\n
# Support event_workflow and event_simulation_workflow\n
if portal.portal_workflow.isTransitionPossible(event, \'receive\'):\n
event.receive()\n
if portal.portal_workflow.isTransitionPossible(event, \'stop\'):\n
event.stop()\n
else:\n
event.plan()\n
\n
\n
if batch_mode:\n
if batch_mode:\n
return event\n
return event\n
...
@@ -126,7 +135,7 @@ event.Base_redirect(keep_items={\'portal_status_message\': message})\n
...
@@ -126,7 +135,7 @@ event.Base_redirect(keep_items={\'portal_status_message\': message})\n
</item>
</item>
<item>
<item>
<key>
<string>
_params
</string>
</key>
<key>
<string>
_params
</string>
</key>
<value>
<string>
title, direction, portal_type, resource, text_content=None, batch_mode=False, **kw
</string>
</value>
<value>
<string>
title, direction, portal_type, resource, text_content=None, batch_mode=False,
keep_draft=False,
**kw
</string>
</value>
</item>
</item>
<item>
<item>
<key>
<string>
id
</string>
</key>
<key>
<string>
id
</string>
</key>
...
...
bt5/erp5_crm/SkinTemplateItem/portal_skins/erp5_crm/Base_viewAddEventDialog.xml
View file @
2fc492f4
...
@@ -82,6 +82,7 @@
...
@@ -82,6 +82,7 @@
<value>
<value>
<list>
<list>
<string>
your_text_content
</string>
<string>
your_text_content
</string>
<string>
your_keep_draft
</string>
</list>
</list>
</value>
</value>
</item>
</item>
...
@@ -99,6 +100,8 @@
...
@@ -99,6 +100,8 @@
<string>
your_portal_type
</string>
<string>
your_portal_type
</string>
<string>
your_resource
</string>
<string>
your_resource
</string>
<string>
your_direction
</string>
<string>
your_direction
</string>
<string>
your_source
</string>
<string>
your_destination
</string>
</list>
</list>
</value>
</value>
</item>
</item>
...
...
bt5/erp5_crm/SkinTemplateItem/portal_skins/erp5_crm/Base_viewAddEventDialog/your_destination.xml
0 → 100644
View file @
2fc492f4
<?xml version="1.0"?>
<ZopeData>
<record
id=
"1"
aka=
"AAAAAAAAAAE="
>
<pickle>
<global
name=
"ProxyField"
module=
"Products.ERP5Form.ProxyField"
/>
</pickle>
<pickle>
<dictionary>
<item>
<key>
<string>
delegated_list
</string>
</key>
<value>
<list>
<string>
items
</string>
<string>
title
</string>
</list>
</value>
</item>
<item>
<key>
<string>
id
</string>
</key>
<value>
<string>
your_destination
</string>
</value>
</item>
<item>
<key>
<string>
message_values
</string>
</key>
<value>
<dictionary>
<item>
<key>
<string>
external_validator_failed
</string>
</key>
<value>
<string>
The input failed the external validator.
</string>
</value>
</item>
</dictionary>
</value>
</item>
<item>
<key>
<string>
overrides
</string>
</key>
<value>
<dictionary>
<item>
<key>
<string>
field_id
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
form_id
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
target
</string>
</key>
<value>
<string></string>
</value>
</item>
</dictionary>
</value>
</item>
<item>
<key>
<string>
tales
</string>
</key>
<value>
<dictionary>
<item>
<key>
<string>
field_id
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
form_id
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
items
</string>
</key>
<value>
<persistent>
<string
encoding=
"base64"
>
AAAAAAAAAAI=
</string>
</persistent>
</value>
</item>
<item>
<key>
<string>
target
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
title
</string>
</key>
<value>
<string></string>
</value>
</item>
</dictionary>
</value>
</item>
<item>
<key>
<string>
values
</string>
</key>
<value>
<dictionary>
<item>
<key>
<string>
field_id
</string>
</key>
<value>
<string>
my_list_field
</string>
</value>
</item>
<item>
<key>
<string>
form_id
</string>
</key>
<value>
<string>
Base_viewFieldLibrary
</string>
</value>
</item>
<item>
<key>
<string>
items
</string>
</key>
<value>
<list/>
</value>
</item>
<item>
<key>
<string>
target
</string>
</key>
<value>
<string>
Click to edit the target
</string>
</value>
</item>
<item>
<key>
<string>
title
</string>
</key>
<value>
<string>
Recipient
</string>
</value>
</item>
<item>
<key>
<string>
view_separator
</string>
</key>
<value>
<string
encoding=
"cdata"
>
<![CDATA[
<br />
]]>
</string>
</value>
</item>
</dictionary>
</value>
</item>
</dictionary>
</pickle>
</record>
<record
id=
"2"
aka=
"AAAAAAAAAAI="
>
<pickle>
<global
name=
"TALESMethod"
module=
"Products.Formulator.TALESField"
/>
</pickle>
<pickle>
<dictionary>
<item>
<key>
<string>
_text
</string>
</key>
<value>
<string>
python: here.Ticket_getArrowItemList()+ [(here.getTitle(), here.getRelativeUrl())]
</string>
</value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
bt5/erp5_crm/SkinTemplateItem/portal_skins/erp5_crm/Base_viewAddEventDialog/your_keep_draft.xml
0 → 100644
View file @
2fc492f4
<?xml version="1.0"?>
<ZopeData>
<record
id=
"1"
aka=
"AAAAAAAAAAE="
>
<pickle>
<global
name=
"ProxyField"
module=
"Products.ERP5Form.ProxyField"
/>
</pickle>
<pickle>
<dictionary>
<item>
<key>
<string>
delegated_list
</string>
</key>
<value>
<list>
<string>
title
</string>
</list>
</value>
</item>
<item>
<key>
<string>
id
</string>
</key>
<value>
<string>
your_keep_draft
</string>
</value>
</item>
<item>
<key>
<string>
message_values
</string>
</key>
<value>
<dictionary>
<item>
<key>
<string>
external_validator_failed
</string>
</key>
<value>
<string>
The input failed the external validator.
</string>
</value>
</item>
</dictionary>
</value>
</item>
<item>
<key>
<string>
overrides
</string>
</key>
<value>
<dictionary>
<item>
<key>
<string>
field_id
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
form_id
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
target
</string>
</key>
<value>
<string></string>
</value>
</item>
</dictionary>
</value>
</item>
<item>
<key>
<string>
tales
</string>
</key>
<value>
<dictionary>
<item>
<key>
<string>
field_id
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
form_id
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
target
</string>
</key>
<value>
<string></string>
</value>
</item>
</dictionary>
</value>
</item>
<item>
<key>
<string>
values
</string>
</key>
<value>
<dictionary>
<item>
<key>
<string>
field_id
</string>
</key>
<value>
<string>
my_checkbox
</string>
</value>
</item>
<item>
<key>
<string>
form_id
</string>
</key>
<value>
<string>
Base_viewFieldLibrary
</string>
</value>
</item>
<item>
<key>
<string>
target
</string>
</key>
<value>
<string>
Click to edit the target
</string>
</value>
</item>
<item>
<key>
<string>
title
</string>
</key>
<value>
<string>
Keep in draft state
</string>
</value>
</item>
</dictionary>
</value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
bt5/erp5_crm/SkinTemplateItem/portal_skins/erp5_crm/Base_viewAddEventDialog/your_source.xml
0 → 100644
View file @
2fc492f4
<?xml version="1.0"?>
<ZopeData>
<record
id=
"1"
aka=
"AAAAAAAAAAE="
>
<pickle>
<global
name=
"ProxyField"
module=
"Products.ERP5Form.ProxyField"
/>
</pickle>
<pickle>
<dictionary>
<item>
<key>
<string>
delegated_list
</string>
</key>
<value>
<list>
<string>
items
</string>
<string>
title
</string>
</list>
</value>
</item>
<item>
<key>
<string>
id
</string>
</key>
<value>
<string>
your_source
</string>
</value>
</item>
<item>
<key>
<string>
message_values
</string>
</key>
<value>
<dictionary>
<item>
<key>
<string>
external_validator_failed
</string>
</key>
<value>
<string>
The input failed the external validator.
</string>
</value>
</item>
</dictionary>
</value>
</item>
<item>
<key>
<string>
overrides
</string>
</key>
<value>
<dictionary>
<item>
<key>
<string>
field_id
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
form_id
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
target
</string>
</key>
<value>
<string></string>
</value>
</item>
</dictionary>
</value>
</item>
<item>
<key>
<string>
tales
</string>
</key>
<value>
<dictionary>
<item>
<key>
<string>
field_id
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
form_id
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
items
</string>
</key>
<value>
<persistent>
<string
encoding=
"base64"
>
AAAAAAAAAAI=
</string>
</persistent>
</value>
</item>
<item>
<key>
<string>
target
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
title
</string>
</key>
<value>
<string></string>
</value>
</item>
</dictionary>
</value>
</item>
<item>
<key>
<string>
values
</string>
</key>
<value>
<dictionary>
<item>
<key>
<string>
field_id
</string>
</key>
<value>
<string>
my_list_field
</string>
</value>
</item>
<item>
<key>
<string>
form_id
</string>
</key>
<value>
<string>
Base_viewFieldLibrary
</string>
</value>
</item>
<item>
<key>
<string>
items
</string>
</key>
<value>
<list/>
</value>
</item>
<item>
<key>
<string>
target
</string>
</key>
<value>
<string>
Click to edit the target
</string>
</value>
</item>
<item>
<key>
<string>
title
</string>
</key>
<value>
<string>
Sender or Caller
</string>
</value>
</item>
<item>
<key>
<string>
view_separator
</string>
</key>
<value>
<string
encoding=
"cdata"
>
<![CDATA[
<br />
]]>
</string>
</value>
</item>
</dictionary>
</value>
</item>
</dictionary>
</pickle>
</record>
<record
id=
"2"
aka=
"AAAAAAAAAAI="
>
<pickle>
<global
name=
"TALESMethod"
module=
"Products.Formulator.TALESField"
/>
</pickle>
<pickle>
<dictionary>
<item>
<key>
<string>
_text
</string>
</key>
<value>
<string>
python: here.Ticket_getArrowItemList() + [(here.getTitle(), here.getRelativeUrl())]
</string>
</value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
bt5/erp5_crm/SkinTemplateItem/portal_skins/erp5_crm/Event_createFollowUpTicket.xml
View file @
2fc492f4
...
@@ -57,13 +57,24 @@ event = context\n
...
@@ -57,13 +57,24 @@ event = context\n
operator_list = event.getDestinationList()\n
operator_list = event.getDestinationList()\n
try:\n
try:\n
source_value = portal.ERP5Site_getAuthenticatedMemberPersonValue()\n
source_value = portal.ERP5Site_getAuthenticatedMemberPersonValue()\n
if source_value:\n
operator_list.append(source_value.getRelativeUrl())\n
except ValueError:\n
except ValueError:\n
source_value = None\n
source_value = None\n
if source_value is not None:\n
source_section = portal.portal_preferences.getPreferredSection(),\n
source_section_value = source_value.getDefaultCareerSubordinationValue()\n
\n
operator_list.append(source_value.getRelativeUrl())\n
\n
else:\n
resource_kw = {\n
source_section_value = None\n
"Campaign" : "follow_up_campaign_resource",\n
"Meeting" : "follow_up_meeting_resource",\n
"Sale Opportunity" : "follow_up_sale_opportunity_resource",\n
"Support Request" : "follow_up_support_request_resource",\n
}\n
\n
resource = None\n
if follow_up_ticket_type in resource_kw:\n
resource = kw.get(resource_kw[follow_up_ticket_type], None)\n
\n
\n
\n
module = portal.getDefaultModule(follow_up_ticket_type)\n
module = portal.getDefaultModule(follow_up_ticket_type)\n
ticket = module.newContent(\n
ticket = module.newContent(\n
...
@@ -71,20 +82,25 @@ ticket = module.newContent(\n
...
@@ -71,20 +82,25 @@ ticket = module.newContent(\n
title=follow_up_ticket_title,\n
title=follow_up_ticket_title,\n
start_date=event.getStartDate(),\n
start_date=event.getStartDate(),\n
destination_decision_list=event.getSourceList(),\n
destination_decision_list=event.getSourceList(),\n
destination_section=event.getSourceSection() or event.getSource(),\n
#
destination_section=event.getSourceSection() or event.getSource(),\n
source_trade_set=operator_list,\n
source_trade_set=operator_list,\n
source_value=source_value,\n
source_value=source_value,\n
source_section_value=source_section_value,\n
source_section=source_section,\n
resource=resource,\n
)\n
)\n
\n
\n
follow_up_list = event.getFollowUpList()\n
follow_up_list = event.getFollowUpList()\n
follow_up_list.append(ticket.getRelativeUrl())\n
follow_up_list.append(ticket.getRelativeUrl())\n
event.edit(follow_up_list=follow_up_list)\n
event.edit(follow_up_list=follow_up_list)\n
\n
if portal.portal_workflow.isTransitionPossible(\n
ticket, \'submit\'):\n
ticket.submit()\n
</string>
</value>
</string>
</value>
</item>
</item>
<item>
<item>
<key>
<string>
_params
</string>
</key>
<key>
<string>
_params
</string>
</key>
<value>
<string>
follow_up_ticket_title="Sale Opportunity", follow_up_ticket_type=None,
follow_up_ticket_resource=None,
**kw
</string>
</value>
<value>
<string>
follow_up_ticket_title="Sale Opportunity", follow_up_ticket_type=None, **kw
</string>
</value>
</item>
</item>
<item>
<item>
<key>
<string>
id
</string>
</key>
<key>
<string>
id
</string>
</key>
...
...
bt5/erp5_crm/SkinTemplateItem/portal_skins/erp5_crm/Event_newFollowUpTicket.xml
View file @
2fc492f4
...
@@ -51,17 +51,22 @@
...
@@ -51,17 +51,22 @@
<item>
<item>
<key>
<string>
_body
</string>
</key>
<key>
<string>
_body
</string>
</key>
<value>
<string>
context.Event_createFollowUpTicket(follow_up_ticket_type=follow_up_ticket_type,\n
<value>
<string>
context.Event_createFollowUpTicket(follow_up_ticket_type=follow_up_ticket_type,\n
follow_up_ticket_title=follow_up_ticket_title)\n
follow_up_ticket_title=follow_up_ticket_title,\n
follow_up_campaign_resource=follow_up_campaign_resource,\n
follow_up_meeting_resource=follow_up_meeting_resource,\n
follow_up_sale_opportunity_resource=follow_up_sale_opportunity_resource,\n
follow_up_support_request_resource=follow_up_support_request_resource,\n
**kw)\n
if context.getPortalObject().portal_workflow.isTransitionPossible(\n
if context.getPortalObject().portal_workflow.isTransitionPossible(\n
context, \'deliver\'):\n
context, \'deliver\'):\n
context.deliver()\n
context.deliver()\n
return context.Base_redirect("",
\n
return context.Base_redirect("",\n
keep_items={\'portal_status_message\':context.getPortalObject().Base_translateString("Follow Up Ticket Created.")})\n
keep_items={\'portal_status_message\':context.getPortalObject().Base_translateString("Follow Up Ticket Created.")})\n
</string>
</value>
</string>
</value>
</item>
</item>
<item>
<item>
<key>
<string>
_params
</string>
</key>
<key>
<string>
_params
</string>
</key>
<value>
<string>
follow_up_ticket_type=None, follow_up_ticket_title=None, **kw
</string>
</value>
<value>
<string>
follow_up_ticket_type=None, follow_up_ticket_title=None,
follow_up_campaign_resource=None, follow_up_meeting_resource=None, follow_up_sale_opportunity_resource=None, follow_up_support_request_resource=None,
**kw
</string>
</value>
</item>
</item>
<item>
<item>
<key>
<string>
description
</string>
</key>
<key>
<string>
description
</string>
</key>
...
...
bt5/erp5_crm/SkinTemplateItem/portal_skins/erp5_crm/Event_viewCreateTicketWorkflowActionDialog.xml
View file @
2fc492f4
...
@@ -95,6 +95,11 @@
...
@@ -95,6 +95,11 @@
<list>
<list>
<string>
your_follow_up_ticket_title
</string>
<string>
your_follow_up_ticket_title
</string>
<string>
your_follow_up_ticket_type
</string>
<string>
your_follow_up_ticket_type
</string>
<string>
your_follow_up_campaign_resource
</string>
<string>
your_follow_up_support_request_resource
</string>
<string>
your_follow_up_meeting_resource
</string>
<string>
your_follow_up_sale_opportunity_resource
</string>
<string>
additionnal_javascript
</string>
</list>
</list>
</value>
</value>
</item>
</item>
...
...
bt5/erp5_crm/SkinTemplateItem/portal_skins/erp5_crm/Event_viewCreateTicketWorkflowActionDialog/additionnal_javascript.xml
0 → 100644
View file @
2fc492f4
<?xml version="1.0"?>
<ZopeData>
<record
id=
"1"
aka=
"AAAAAAAAAAE="
>
<pickle>
<global
name=
"EditorField"
module=
"Products.ERP5Form.EditorField"
/>
</pickle>
<pickle>
<dictionary>
<item>
<key>
<string>
id
</string>
</key>
<value>
<string>
additionnal_javascript
</string>
</value>
</item>
<item>
<key>
<string>
message_values
</string>
</key>
<value>
<dictionary>
<item>
<key>
<string>
external_validator_failed
</string>
</key>
<value>
<string>
The input failed the external validator.
</string>
</value>
</item>
<item>
<key>
<string>
line_too_long
</string>
</key>
<value>
<string>
A line was too long.
</string>
</value>
</item>
<item>
<key>
<string>
required_not_found
</string>
</key>
<value>
<string>
Input is required but no input given.
</string>
</value>
</item>
<item>
<key>
<string>
too_long
</string>
</key>
<value>
<string>
You entered too many characters.
</string>
</value>
</item>
<item>
<key>
<string>
too_many_lines
</string>
</key>
<value>
<string>
You entered too many lines.
</string>
</value>
</item>
</dictionary>
</value>
</item>
<item>
<key>
<string>
overrides
</string>
</key>
<value>
<dictionary>
<item>
<key>
<string>
alternate_name
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
css_class
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
default
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
description
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
editable
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
enabled
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
external_validator
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
extra
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
height
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
hidden
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
max_length
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
max_linelength
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
max_lines
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
required
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
text_editor
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
title
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
unicode
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
whitespace_preserve
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
width
</string>
</key>
<value>
<string></string>
</value>
</item>
</dictionary>
</value>
</item>
<item>
<key>
<string>
tales
</string>
</key>
<value>
<dictionary>
<item>
<key>
<string>
alternate_name
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
css_class
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
default
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
description
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
editable
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
enabled
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
external_validator
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
extra
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
height
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
hidden
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
max_length
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
max_linelength
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
max_lines
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
required
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
text_editor
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
title
</string>
</key>
<value>
<persistent>
<string
encoding=
"base64"
>
AAAAAAAAAAI=
</string>
</persistent>
</value>
</item>
<item>
<key>
<string>
unicode
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
whitespace_preserve
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
width
</string>
</key>
<value>
<string></string>
</value>
</item>
</dictionary>
</value>
</item>
<item>
<key>
<string>
values
</string>
</key>
<value>
<dictionary>
<item>
<key>
<string>
alternate_name
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
css_class
</string>
</key>
<value>
<string>
hidden
</string>
</value>
</item>
<item>
<key>
<string>
default
</string>
</key>
<value>
<string
encoding=
"cdata"
>
<![CDATA[
<script>
\n
$(function (){\n
function toggleNatureField() {\n
if ($("select[name=\'field_your_follow_up_ticket_type\'] option:selected").val() == \'Support Request\') {\n
$("select[name=\'field_your_follow_up_campaign_resource\']").parent().parent().addClass("hidden");\n
$("select[name=\'field_your_follow_up_campaign_resource\']").addClass("hidden");\n
$("select[name=\'field_your_follow_up_meeting_resource\']").parent().parent().addClass("hidden");\n
$("select[name=\'field_your_follow_up_meeting_resource\']").addClass("hidden");\n
$("select[name=\'field_your_follow_up_support_request_resource\']").parent().parent().removeClass("hidden");\n
$("select[name=\'field_your_follow_up_support_request_resource\']").removeClass("hidden");\n
$("select[name=\'field_your_follow_up_sale_opportunity_resource\']").parent().parent().addClass("hidden");\n
$("select[name=\'field_your_follow_up_sale_opportunity_resource\']").addClass("hidden");\n
}\n
else if ($("select[name=\'field_your_follow_up_ticket_type\'] option:selected").val() == \'Campaign\'){\n
$("select[name=\'field_your_follow_up_campaign_resource\']").parent().parent().removeClass("hidden");\n
$("select[name=\'field_your_follow_up_campaign_resource\']").removeClass("hidden");\n
$("select[name=\'field_your_follow_up_meeting_resource\']").parent().parent().addClass("hidden");\n
$("select[name=\'field_your_follow_up_meeting_resource\']").addClass("hidden");\n
$("select[name=\'field_your_follow_up_support_request_resource\']").parent().parent().addClass("hidden");\n
$("select[name=\'field_your_follow_up_support_request_resource\']").addClass("hidden");\n
$("select[name=\'field_your_follow_up_sale_opportunity_resource\']").parent().parent().addClass("hidden");\n
$("select[name=\'field_your_follow_up_sale_opportunity_resource\']").addClass("hidden");\n
}\n
else if ($("select[name=\'field_your_follow_up_ticket_type\'] option:selected").val() == \'Meeting\'){\n
$("select[name=\'field_your_follow_up_campaign_resource\']").parent().parent().addClass("hidden");\n
$("select[name=\'field_your_follow_up_campaign_resource\']").addClass("hidden");\n
$("select[name=\'field_your_follow_up_meeting_resource\']").parent().parent().removeClass("hidden");\n
$("select[name=\'field_your_follow_up_meeting_resource\']").removeClass("hidden");\n
$("select[name=\'field_your_follow_up_support_request_resource\']").parent().parent().addClass("hidden");\n
$("select[name=\'field_your_follow_up_support_request_resource\']").addClass("hidden");\n
$("select[name=\'field_your_follow_up_sale_opportunity_resource\']").parent().parent().addClass("hidden");\n
$("select[name=\'field_your_follow_up_sale_opportunity_resource\']").addClass("hidden");\n
}\n
else if ($("select[name=\'field_your_follow_up_ticket_type\'] option:selected").val() == \'Sale Opportunity\'){\n
$("select[name=\'field_your_follow_up_campaign_resource\']").parent().parent().addClass("hidden");\n
$("select[name=\'field_your_follow_up_campaign_resource\']").addClass("hidden");\n
$("select[name=\'field_your_follow_up_meeting_resource\']").parent().parent().addClass("hidden");\n
$("select[name=\'field_your_follow_up_meeting_resource\']").addClass("hidden");\n
$("select[name=\'field_your_follow_up_support_request_resource\']").parent().parent().addClass("hidden");\n
$("select[name=\'field_your_follow_up_support_request_resource\']").addClass("hidden");\n
$("select[name=\'field_your_follow_up_sale_opportunity_resource\']").parent().parent().removeClass("hidden");\n
$("select[name=\'field_your_follow_up_sale_opportunity_resource\']").removeClass("hidden");\n
}\n
else {\n
$("select[name=\'field_your_follow_up_campaign_resource\']").parent().parent().addClass("hidden");\n
$("select[name=\'field_your_follow_up_campaign_resource\']").addClass("hidden");\n
$("select[name=\'field_your_follow_up_meeting_resource\']").parent().parent().addClass("hidden");\n
$("select[name=\'field_your_follow_up_meeting_resource\']").addClass("hidden");\n
$("select[name=\'field_your_follow_up_support_request_resource\']").parent().parent().addClass("hidden");\n
$("select[name=\'field_your_follow_up_support_request_resource\']").addClass("hidden");\n
$("select[name=\'field_your_follow_up_sale_opportunity_resource\']").parent().parent().addClass("hidden");\n
$("select[name=\'field_your_follow_up_sale_opportunity_resource\']").addClass("hidden");\n
}\n
}\n
$("select[name=\'field_your_follow_up_ticket_type\']").change(function(){toggleNatureField()});\n
toggleNatureField();\n
});\n
</script>
]]>
</string>
</value>
</item>
<item>
<key>
<string>
description
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
editable
</string>
</key>
<value>
<int>
0
</int>
</value>
</item>
<item>
<key>
<string>
enabled
</string>
</key>
<value>
<int>
1
</int>
</value>
</item>
<item>
<key>
<string>
external_validator
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
extra
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
height
</string>
</key>
<value>
<int>
5
</int>
</value>
</item>
<item>
<key>
<string>
hidden
</string>
</key>
<value>
<int>
0
</int>
</value>
</item>
<item>
<key>
<string>
max_length
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
max_linelength
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
max_lines
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
required
</string>
</key>
<value>
<int>
0
</int>
</value>
</item>
<item>
<key>
<string>
text_editor
</string>
</key>
<value>
<string>
text_area
</string>
</value>
</item>
<item>
<key>
<string>
title
</string>
</key>
<value>
<string>
show
</string>
</value>
</item>
<item>
<key>
<string>
unicode
</string>
</key>
<value>
<int>
0
</int>
</value>
</item>
<item>
<key>
<string>
whitespace_preserve
</string>
</key>
<value>
<int>
1
</int>
</value>
</item>
<item>
<key>
<string>
width
</string>
</key>
<value>
<int>
40
</int>
</value>
</item>
</dictionary>
</value>
</item>
</dictionary>
</pickle>
</record>
<record
id=
"2"
aka=
"AAAAAAAAAAI="
>
<pickle>
<global
name=
"TALESMethod"
module=
"Products.Formulator.TALESField"
/>
</pickle>
<pickle>
<dictionary>
<item>
<key>
<string>
_text
</string>
</key>
<value>
<string>
string:
</string>
</value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
bt5/erp5_crm/SkinTemplateItem/portal_skins/erp5_crm/Event_viewCreateTicketWorkflowActionDialog/your_follow_up_campaign_resource.xml
0 → 100644
View file @
2fc492f4
<?xml version="1.0"?>
<ZopeData>
<record
id=
"1"
aka=
"AAAAAAAAAAE="
>
<pickle>
<global
name=
"ProxyField"
module=
"Products.ERP5Form.ProxyField"
/>
</pickle>
<pickle>
<dictionary>
<item>
<key>
<string>
delegated_list
</string>
</key>
<value>
<list>
<string>
css_class
</string>
<string>
default
</string>
<string>
items
</string>
<string>
required
</string>
<string>
title
</string>
</list>
</value>
</item>
<item>
<key>
<string>
id
</string>
</key>
<value>
<string>
your_follow_up_campaign_resource
</string>
</value>
</item>
<item>
<key>
<string>
message_values
</string>
</key>
<value>
<dictionary>
<item>
<key>
<string>
external_validator_failed
</string>
</key>
<value>
<string>
The input failed the external validator.
</string>
</value>
</item>
</dictionary>
</value>
</item>
<item>
<key>
<string>
overrides
</string>
</key>
<value>
<dictionary>
<item>
<key>
<string>
field_id
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
form_id
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
target
</string>
</key>
<value>
<string></string>
</value>
</item>
</dictionary>
</value>
</item>
<item>
<key>
<string>
tales
</string>
</key>
<value>
<dictionary>
<item>
<key>
<string>
default
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
field_id
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
form_id
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
items
</string>
</key>
<value>
<persistent>
<string
encoding=
"base64"
>
AAAAAAAAAAI=
</string>
</persistent>
</value>
</item>
<item>
<key>
<string>
required
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
target
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
title
</string>
</key>
<value>
<string></string>
</value>
</item>
</dictionary>
</value>
</item>
<item>
<key>
<string>
values
</string>
</key>
<value>
<dictionary>
<item>
<key>
<string>
css_class
</string>
</key>
<value>
<string>
hidden
</string>
</value>
</item>
<item>
<key>
<string>
default
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
field_id
</string>
</key>
<value>
<string>
your_list_field
</string>
</value>
</item>
<item>
<key>
<string>
form_id
</string>
</key>
<value>
<string>
Base_viewFieldLibrary
</string>
</value>
</item>
<item>
<key>
<string>
items
</string>
</key>
<value>
<list/>
</value>
</item>
<item>
<key>
<string>
required
</string>
</key>
<value>
<int>
0
</int>
</value>
</item>
<item>
<key>
<string>
target
</string>
</key>
<value>
<string>
Click to edit the target
</string>
</value>
</item>
<item>
<key>
<string>
title
</string>
</key>
<value>
<string>
Nature
</string>
</value>
</item>
</dictionary>
</value>
</item>
</dictionary>
</pickle>
</record>
<record
id=
"2"
aka=
"AAAAAAAAAAI="
>
<pickle>
<global
name=
"TALESMethod"
module=
"Products.Formulator.TALESField"
/>
</pickle>
<pickle>
<dictionary>
<item>
<key>
<string>
_text
</string>
</key>
<value>
<string>
python: here.Ticket_getResourceItemList(portal_type="Campaign", include_context=False)
</string>
</value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
bt5/erp5_crm/SkinTemplateItem/portal_skins/erp5_crm/Event_viewCreateTicketWorkflowActionDialog/your_follow_up_meeting_resource.xml
0 → 100644
View file @
2fc492f4
<?xml version="1.0"?>
<ZopeData>
<record
id=
"1"
aka=
"AAAAAAAAAAE="
>
<pickle>
<global
name=
"ProxyField"
module=
"Products.ERP5Form.ProxyField"
/>
</pickle>
<pickle>
<dictionary>
<item>
<key>
<string>
delegated_list
</string>
</key>
<value>
<list>
<string>
css_class
</string>
<string>
default
</string>
<string>
items
</string>
<string>
required
</string>
<string>
title
</string>
</list>
</value>
</item>
<item>
<key>
<string>
id
</string>
</key>
<value>
<string>
your_follow_up_meeting_resource
</string>
</value>
</item>
<item>
<key>
<string>
message_values
</string>
</key>
<value>
<dictionary>
<item>
<key>
<string>
external_validator_failed
</string>
</key>
<value>
<string>
The input failed the external validator.
</string>
</value>
</item>
</dictionary>
</value>
</item>
<item>
<key>
<string>
overrides
</string>
</key>
<value>
<dictionary>
<item>
<key>
<string>
field_id
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
form_id
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
target
</string>
</key>
<value>
<string></string>
</value>
</item>
</dictionary>
</value>
</item>
<item>
<key>
<string>
tales
</string>
</key>
<value>
<dictionary>
<item>
<key>
<string>
default
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
field_id
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
form_id
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
items
</string>
</key>
<value>
<persistent>
<string
encoding=
"base64"
>
AAAAAAAAAAI=
</string>
</persistent>
</value>
</item>
<item>
<key>
<string>
required
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
target
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
title
</string>
</key>
<value>
<string></string>
</value>
</item>
</dictionary>
</value>
</item>
<item>
<key>
<string>
values
</string>
</key>
<value>
<dictionary>
<item>
<key>
<string>
css_class
</string>
</key>
<value>
<string>
hidden
</string>
</value>
</item>
<item>
<key>
<string>
default
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
field_id
</string>
</key>
<value>
<string>
your_list_field
</string>
</value>
</item>
<item>
<key>
<string>
form_id
</string>
</key>
<value>
<string>
Base_viewFieldLibrary
</string>
</value>
</item>
<item>
<key>
<string>
items
</string>
</key>
<value>
<list/>
</value>
</item>
<item>
<key>
<string>
required
</string>
</key>
<value>
<int>
0
</int>
</value>
</item>
<item>
<key>
<string>
target
</string>
</key>
<value>
<string>
Click to edit the target
</string>
</value>
</item>
<item>
<key>
<string>
title
</string>
</key>
<value>
<string>
Nature
</string>
</value>
</item>
</dictionary>
</value>
</item>
</dictionary>
</pickle>
</record>
<record
id=
"2"
aka=
"AAAAAAAAAAI="
>
<pickle>
<global
name=
"TALESMethod"
module=
"Products.Formulator.TALESField"
/>
</pickle>
<pickle>
<dictionary>
<item>
<key>
<string>
_text
</string>
</key>
<value>
<string>
python: here.Ticket_getResourceItemList(portal_type="Meeting", include_context=False)
</string>
</value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
bt5/erp5_crm/SkinTemplateItem/portal_skins/erp5_crm/Event_viewCreateTicketWorkflowActionDialog/your_follow_up_sale_opportunity_resource.xml
0 → 100644
View file @
2fc492f4
<?xml version="1.0"?>
<ZopeData>
<record
id=
"1"
aka=
"AAAAAAAAAAE="
>
<pickle>
<global
name=
"ProxyField"
module=
"Products.ERP5Form.ProxyField"
/>
</pickle>
<pickle>
<dictionary>
<item>
<key>
<string>
delegated_list
</string>
</key>
<value>
<list>
<string>
css_class
</string>
<string>
default
</string>
<string>
items
</string>
<string>
required
</string>
<string>
title
</string>
</list>
</value>
</item>
<item>
<key>
<string>
id
</string>
</key>
<value>
<string>
your_follow_up_sale_opportunity_resource
</string>
</value>
</item>
<item>
<key>
<string>
message_values
</string>
</key>
<value>
<dictionary>
<item>
<key>
<string>
external_validator_failed
</string>
</key>
<value>
<string>
The input failed the external validator.
</string>
</value>
</item>
</dictionary>
</value>
</item>
<item>
<key>
<string>
overrides
</string>
</key>
<value>
<dictionary>
<item>
<key>
<string>
field_id
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
form_id
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
target
</string>
</key>
<value>
<string></string>
</value>
</item>
</dictionary>
</value>
</item>
<item>
<key>
<string>
tales
</string>
</key>
<value>
<dictionary>
<item>
<key>
<string>
default
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
field_id
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
form_id
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
items
</string>
</key>
<value>
<persistent>
<string
encoding=
"base64"
>
AAAAAAAAAAI=
</string>
</persistent>
</value>
</item>
<item>
<key>
<string>
required
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
target
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
title
</string>
</key>
<value>
<string></string>
</value>
</item>
</dictionary>
</value>
</item>
<item>
<key>
<string>
values
</string>
</key>
<value>
<dictionary>
<item>
<key>
<string>
css_class
</string>
</key>
<value>
<string>
hidden
</string>
</value>
</item>
<item>
<key>
<string>
default
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
field_id
</string>
</key>
<value>
<string>
your_list_field
</string>
</value>
</item>
<item>
<key>
<string>
form_id
</string>
</key>
<value>
<string>
Base_viewFieldLibrary
</string>
</value>
</item>
<item>
<key>
<string>
items
</string>
</key>
<value>
<list/>
</value>
</item>
<item>
<key>
<string>
required
</string>
</key>
<value>
<int>
0
</int>
</value>
</item>
<item>
<key>
<string>
target
</string>
</key>
<value>
<string>
Click to edit the target
</string>
</value>
</item>
<item>
<key>
<string>
title
</string>
</key>
<value>
<string>
Nature
</string>
</value>
</item>
</dictionary>
</value>
</item>
</dictionary>
</pickle>
</record>
<record
id=
"2"
aka=
"AAAAAAAAAAI="
>
<pickle>
<global
name=
"TALESMethod"
module=
"Products.Formulator.TALESField"
/>
</pickle>
<pickle>
<dictionary>
<item>
<key>
<string>
_text
</string>
</key>
<value>
<string>
python: here.Ticket_getResourceItemList(portal_type="Sale Opportunity", include_context=False)
</string>
</value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
bt5/erp5_crm/SkinTemplateItem/portal_skins/erp5_crm/Event_viewCreateTicketWorkflowActionDialog/your_follow_up_support_request_resource.xml
0 → 100644
View file @
2fc492f4
<?xml version="1.0"?>
<ZopeData>
<record
id=
"1"
aka=
"AAAAAAAAAAE="
>
<pickle>
<global
name=
"ProxyField"
module=
"Products.ERP5Form.ProxyField"
/>
</pickle>
<pickle>
<dictionary>
<item>
<key>
<string>
delegated_list
</string>
</key>
<value>
<list>
<string>
default
</string>
<string>
items
</string>
<string>
required
</string>
<string>
title
</string>
</list>
</value>
</item>
<item>
<key>
<string>
id
</string>
</key>
<value>
<string>
your_follow_up_support_request_resource
</string>
</value>
</item>
<item>
<key>
<string>
message_values
</string>
</key>
<value>
<dictionary>
<item>
<key>
<string>
external_validator_failed
</string>
</key>
<value>
<string>
The input failed the external validator.
</string>
</value>
</item>
</dictionary>
</value>
</item>
<item>
<key>
<string>
overrides
</string>
</key>
<value>
<dictionary>
<item>
<key>
<string>
field_id
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
form_id
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
target
</string>
</key>
<value>
<string></string>
</value>
</item>
</dictionary>
</value>
</item>
<item>
<key>
<string>
tales
</string>
</key>
<value>
<dictionary>
<item>
<key>
<string>
default
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
field_id
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
form_id
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
items
</string>
</key>
<value>
<persistent>
<string
encoding=
"base64"
>
AAAAAAAAAAI=
</string>
</persistent>
</value>
</item>
<item>
<key>
<string>
required
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
target
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
title
</string>
</key>
<value>
<string></string>
</value>
</item>
</dictionary>
</value>
</item>
<item>
<key>
<string>
values
</string>
</key>
<value>
<dictionary>
<item>
<key>
<string>
default
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
field_id
</string>
</key>
<value>
<string>
your_list_field
</string>
</value>
</item>
<item>
<key>
<string>
form_id
</string>
</key>
<value>
<string>
Base_viewFieldLibrary
</string>
</value>
</item>
<item>
<key>
<string>
items
</string>
</key>
<value>
<list/>
</value>
</item>
<item>
<key>
<string>
required
</string>
</key>
<value>
<int>
0
</int>
</value>
</item>
<item>
<key>
<string>
target
</string>
</key>
<value>
<string>
Click to edit the target
</string>
</value>
</item>
<item>
<key>
<string>
title
</string>
</key>
<value>
<string>
Nature
</string>
</value>
</item>
</dictionary>
</value>
</item>
</dictionary>
</pickle>
</record>
<record
id=
"2"
aka=
"AAAAAAAAAAI="
>
<pickle>
<global
name=
"TALESMethod"
module=
"Products.Formulator.TALESField"
/>
</pickle>
<pickle>
<dictionary>
<item>
<key>
<string>
_text
</string>
</key>
<value>
<string>
python: here.Ticket_getResourceItemList(portal_type="Support Request", include_context=False)
</string>
</value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
bt5/erp5_crm/SkinTemplateItem/portal_skins/erp5_crm/Event_viewCreateTicketWorkflowActionDialog/your_follow_up_ticket_title.xml
View file @
2fc492f4
...
@@ -10,6 +10,7 @@
...
@@ -10,6 +10,7 @@
<key>
<string>
delegated_list
</string>
</key>
<key>
<string>
delegated_list
</string>
</key>
<value>
<value>
<list>
<list>
<string>
default
</string>
<string>
required
</string>
<string>
required
</string>
</list>
</list>
</value>
</value>
...
@@ -52,6 +53,12 @@
...
@@ -52,6 +53,12 @@
<key>
<string>
tales
</string>
</key>
<key>
<string>
tales
</string>
</key>
<value>
<value>
<dictionary>
<dictionary>
<item>
<key>
<string>
default
</string>
</key>
<value>
<persistent>
<string
encoding=
"base64"
>
AAAAAAAAAAI=
</string>
</persistent>
</value>
</item>
<item>
<item>
<key>
<string>
field_id
</string>
</key>
<key>
<string>
field_id
</string>
</key>
<value>
<string></string>
</value>
<value>
<string></string>
</value>
...
@@ -60,6 +67,10 @@
...
@@ -60,6 +67,10 @@
<key>
<string>
form_id
</string>
</key>
<key>
<string>
form_id
</string>
</key>
<value>
<string></string>
</value>
<value>
<string></string>
</value>
</item>
</item>
<item>
<key>
<string>
required
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<item>
<key>
<string>
target
</string>
</key>
<key>
<string>
target
</string>
</key>
<value>
<string></string>
</value>
<value>
<string></string>
</value>
...
@@ -71,6 +82,10 @@
...
@@ -71,6 +82,10 @@
<key>
<string>
values
</string>
</key>
<key>
<string>
values
</string>
</key>
<value>
<value>
<dictionary>
<dictionary>
<item>
<key>
<string>
default
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<item>
<key>
<string>
field_id
</string>
</key>
<key>
<string>
field_id
</string>
</key>
<value>
<string>
your_title
</string>
</value>
<value>
<string>
your_title
</string>
</value>
...
@@ -93,4 +108,17 @@
...
@@ -93,4 +108,17 @@
</dictionary>
</dictionary>
</pickle>
</pickle>
</record>
</record>
<record
id=
"2"
aka=
"AAAAAAAAAAI="
>
<pickle>
<global
name=
"TALESMethod"
module=
"Products.Formulator.TALESField"
/>
</pickle>
<pickle>
<dictionary>
<item>
<key>
<string>
_text
</string>
</key>
<value>
<string>
here/getTitle
</string>
</value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
</ZopeData>
bt5/erp5_crm/SkinTemplateItem/portal_skins/erp5_crm/Event_viewStartWorkflowActionDialog/your_warning_message.xml
View file @
2fc492f4
...
@@ -148,7 +148,9 @@
...
@@ -148,7 +148,9 @@
</item>
</item>
<item>
<item>
<key>
<string>
enabled
</string>
</key>
<key>
<string>
enabled
</string>
</key>
<value>
<string></string>
</value>
<value>
<persistent>
<string
encoding=
"base64"
>
AAAAAAAAAAM=
</string>
</persistent>
</value>
</item>
</item>
<item>
<item>
<key>
<string>
external_validator
</string>
</key>
<key>
<string>
external_validator
</string>
</key>
...
@@ -304,4 +306,17 @@
...
@@ -304,4 +306,17 @@
</dictionary>
</dictionary>
</pickle>
</pickle>
</record>
</record>
<record
id=
"3"
aka=
"AAAAAAAAAAM="
>
<pickle>
<global
name=
"TALESMethod"
module=
"Products.Formulator.TALESField"
/>
</pickle>
<pickle>
<dictionary>
<item>
<key>
<string>
_text
</string>
</key>
<value>
<string>
python: here.getPortalType() == "Mail Message"
</string>
</value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
</ZopeData>
bt5/erp5_crm/SkinTemplateItem/portal_skins/erp5_crm/Ticket_getArrowItemList.xml
View file @
2fc492f4
...
@@ -54,18 +54,21 @@
...
@@ -54,18 +54,21 @@
arrow = portal.portal_property_sheets.get("Arrow")\n
arrow = portal.portal_property_sheets.get("Arrow")\n
\n
\n
value_list = [(\'\', \'\'),]\n
value_list = [(\'\', \'\'),]\n
value_list_append = value_list.append\n
\n
\n
# add current user\n
# add current user\n
user = portal.ERP5Site_getAuthenticatedMemberPersonValue()\n
user = portal.ERP5Site_getAuthenticatedMemberPersonValue()\n
if user is not None:\n
if user is not None:\n
value_list.append((user.getTitle(), user.getRelativeUrl()))\n
value_list_append((user.getTitle(), user.getRelativeUrl()))\n
\n
for property in arrow.contentValues():\n
value = context.getProperty("%s_value" %property.getReference(), None)\n
if value is not None and value.getPortalType() in portal.getPortalNodeTypeList():\n
value_list.append((value.getTitle(), value.getRelativeUrl()))\n
\n
\n
for property_value in arrow.contentValues():\n
value = context.getProperty("%s_value" %property_value.getReference(), None)\n
if value and value.getPortalType() in portal.getPortalNodeTypeList():\n
value = (value.getTitle(), value.getRelativeUrl())\n
if value not in value_list:\n
value_list_append(value)\n
\n
\n
value_list.sort(key=lambda x: x[0])\n
\n
\n
return value_list\n
return value_list\n
</string>
</value>
</string>
</value>
...
...
bt5/erp5_crm/SkinTemplateItem/portal_skins/erp5_crm/Ticket_getResourceItemList.xml
View file @
2fc492f4
...
@@ -59,23 +59,26 @@ from zExceptions import Unauthorized\n
...
@@ -59,23 +59,26 @@ from zExceptions import Unauthorized\n
from Products.ERP5Type.Cache import CachingMethod\n
from Products.ERP5Type.Cache import CachingMethod\n
portal = context.getPortalObject()\n
portal = context.getPortalObject()\n
\n
\n
preference_id = \'preferred_%s_use\' % \'_\'.join(token.lower() for token in context.getPortalType().split(\' \'))\n
if not portal_type:\n
portal_type = context.getPortalType()\n
\n
preference_id = \'preferred_%s_use\' % \'_\'.join(token.lower() for token in portal_type.split(\' \'))\n
sql_kw = {\'portal_type\': portal.getPortalResourceTypeList(),\n
sql_kw = {\'portal_type\': portal.getPortalResourceTypeList(),\n
\'use_uid\': portal.portal_categories.getCategoryUid(portal.portal_preferences.getPreference(preference_id), base_category=\'use\'),\n
\'use_uid\': portal.portal_categories.getCategoryUid(portal.portal_preferences.getPreference(preference_id), base_category=\'use\'),\n
\'validation_state\': \'validated\',\n
\'validation_state\': \'validated\',\n
\'sort_on\': \'title\'}\n
\'sort_on\': \'title\'}\n
\n
\n
def getResourceItemList():\n
def getResourceItemList(
portal_type
):\n
return [(\'\', \'\')] + [(result.getTitle(), result.getRelativeUrl()) for result in portal.portal_catalog(**sql_kw)]\n
return [(\'\', \'\')] + [(result.getTitle(), result.getRelativeUrl()) for result in portal.portal_catalog(**sql_kw)]\n
\n
\n
getResourceItemList = CachingMethod(getResourceItemList, \n
getResourceItemList = CachingMethod(getResourceItemList, \n
id=(script.id, context.Localizer.get_selected_language()), \n
id=(script.id, context.Localizer.get_selected_language()), \n
cache_factory=\'erp5_ui_long\')\n
cache_factory=\'erp5_ui_long\')\n
\n
\n
result_list = getResourceItemList()[:]\n
result_list = getResourceItemList(
portal_type
)[:]\n
\n
\n
# BBB returns actual value in list field\n
# BBB returns actual value in list field\n
if context.getResource() and context.getResource() not in [result[1] for result in result_list]:\n
if
include_context and
context.getResource() and context.getResource() not in [result[1] for result in result_list]:\n
try:\n
try:\n
resource_value = portal.portal_categories.getCategoryValue(context.getResource(), base_category=\'resource\')\n
resource_value = portal.portal_categories.getCategoryValue(context.getResource(), base_category=\'resource\')\n
if resource_value is not None:\n
if resource_value is not None:\n
...
@@ -94,7 +97,7 @@ return result_list\n
...
@@ -94,7 +97,7 @@ return result_list\n
</item>
</item>
<item>
<item>
<key>
<string>
_params
</string>
</key>
<key>
<string>
_params
</string>
</key>
<value>
<string></string>
</value>
<value>
<string>
portal_type=None, include_context=True
</string>
</value>
</item>
</item>
<item>
<item>
<key>
<string>
id
</string>
</key>
<key>
<string>
id
</string>
</key>
...
...
bt5/erp5_crm/SkinTemplateItem/portal_skins/erp5_crm/Ticket_newEvent.xml
View file @
2fc492f4
...
@@ -77,13 +77,14 @@ event = module.newContent(portal_type=portal_type, \n
...
@@ -77,13 +77,14 @@ event = module.newContent(portal_type=portal_type, \n
follow_up=context.getRelativeUrl())\n
follow_up=context.getRelativeUrl())\n
\n
\n
# Trigger appropriate workflow action\n
# Trigger appropriate workflow action\n
if direction == \'incoming\':\n
if not keep_draft:\n
if direction == \'incoming\':\n
# Support event_workflow and event_simulation_workflow\n
# Support event_workflow and event_simulation_workflow\n
if portal.portal_workflow.isTransitionPossible(event, \'receive\'):\n
if portal.portal_workflow.isTransitionPossible(event, \'receive\'):\n
event.receive()\n
event.receive()\n
if portal.portal_workflow.isTransitionPossible(event, \'stop\'):\n
if portal.portal_workflow.isTransitionPossible(event, \'stop\'):\n
event.stop()\n
event.stop()\n
else:\n
else:\n
event.plan()\n
event.plan()\n
\n
\n
# Redirect to event\n
# Redirect to event\n
...
@@ -95,7 +96,7 @@ return event.Base_redirect(\'view\', keep_items = dict(portal_status_message=por
...
@@ -95,7 +96,7 @@ return event.Base_redirect(\'view\', keep_items = dict(portal_status_message=por
</item>
</item>
<item>
<item>
<key>
<string>
_params
</string>
</key>
<key>
<string>
_params
</string>
</key>
<value>
<string>
form_id=\'view\', portal_type=None, title=None, resource=None, text_content=None,direction=None, source=None, destination=None, **kw
</string>
</value>
<value>
<string>
form_id=\'view\', portal_type=None, title=None, resource=None, text_content=None,direction=None, source=None, destination=None,
keep_draft=False,
**kw
</string>
</value>
</item>
</item>
<item>
<item>
<key>
<string>
id
</string>
</key>
<key>
<string>
id
</string>
</key>
...
...
bt5/erp5_crm/SkinTemplateItem/portal_skins/erp5_crm/Ticket_viewNewEventDialog.xml
View file @
2fc492f4
...
@@ -76,6 +76,7 @@
...
@@ -76,6 +76,7 @@
<value>
<value>
<list>
<list>
<string>
your_text_content
</string>
<string>
your_text_content
</string>
<string>
your_keep_draft
</string>
</list>
</list>
</value>
</value>
</item>
</item>
...
...
bt5/erp5_crm/SkinTemplateItem/portal_skins/erp5_crm/Ticket_viewNewEventDialog/your_keep_draft.xml
0 → 100644
View file @
2fc492f4
<?xml version="1.0"?>
<ZopeData>
<record
id=
"1"
aka=
"AAAAAAAAAAE="
>
<pickle>
<global
name=
"ProxyField"
module=
"Products.ERP5Form.ProxyField"
/>
</pickle>
<pickle>
<dictionary>
<item>
<key>
<string>
delegated_list
</string>
</key>
<value>
<list>
<string>
title
</string>
</list>
</value>
</item>
<item>
<key>
<string>
id
</string>
</key>
<value>
<string>
your_keep_draft
</string>
</value>
</item>
<item>
<key>
<string>
message_values
</string>
</key>
<value>
<dictionary>
<item>
<key>
<string>
external_validator_failed
</string>
</key>
<value>
<string>
The input failed the external validator.
</string>
</value>
</item>
</dictionary>
</value>
</item>
<item>
<key>
<string>
overrides
</string>
</key>
<value>
<dictionary>
<item>
<key>
<string>
field_id
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
form_id
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
target
</string>
</key>
<value>
<string></string>
</value>
</item>
</dictionary>
</value>
</item>
<item>
<key>
<string>
tales
</string>
</key>
<value>
<dictionary>
<item>
<key>
<string>
field_id
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
form_id
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
target
</string>
</key>
<value>
<string></string>
</value>
</item>
</dictionary>
</value>
</item>
<item>
<key>
<string>
values
</string>
</key>
<value>
<dictionary>
<item>
<key>
<string>
field_id
</string>
</key>
<value>
<string>
my_checkbox
</string>
</value>
</item>
<item>
<key>
<string>
form_id
</string>
</key>
<value>
<string>
Base_viewFieldLibrary
</string>
</value>
</item>
<item>
<key>
<string>
target
</string>
</key>
<value>
<string>
Click to edit the target
</string>
</value>
</item>
<item>
<key>
<string>
title
</string>
</key>
<value>
<string>
Keep in draft state
</string>
</value>
</item>
</dictionary>
</value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
bt5/erp5_crm/bt/revision
View file @
2fc492f4
592
593
\ No newline at end of file
\ No newline at end of file
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment