mirror of
https://github.com/Combodo/iTop.git
synced 2026-02-13 07:24:13 +01:00
N°2112 Remove legacy end-user portal
- Accessing the /portal URL redirects to the new portal (/pages/exec.php?exec_module=itop-portal-base&...) - Removed /itop_design/portals/portal[@id="legacy_portal"] from standard datamodel, adapt your XML accordingly - Removed /itop_design/constants/constant[@id^="PORTAL_"] from standard datamodel, adapt your XML accordingly - Removed PortalWebPage & TransactionException classes - Added a warning in setup when no portal is selected
This commit is contained in:
@@ -1,14 +1,6 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<itop_design xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="1.6">
|
<itop_design xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="1.6">
|
||||||
<portals>
|
<portals>
|
||||||
<portal id="legacy_portal" _delta="define">
|
|
||||||
<url>portal/index.php</url>
|
|
||||||
<rank>1.0</rank>
|
|
||||||
<handler/>
|
|
||||||
<allow>
|
|
||||||
</allow>
|
|
||||||
<deny/>
|
|
||||||
</portal>
|
|
||||||
<portal id="backoffice" _delta="define">
|
<portal id="backoffice" _delta="define">
|
||||||
<url>pages/UI.php</url>
|
<url>pages/UI.php</url>
|
||||||
<rank>2.0</rank>
|
<rank>2.0</rank>
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@@ -2732,6 +2732,13 @@ span.search-button, span.refresh-button {
|
|||||||
overflow: auto;
|
overflow: auto;
|
||||||
border: #ccc 1px solid;
|
border: #ccc 1px solid;
|
||||||
}
|
}
|
||||||
|
#setup .module-selection-body .wiz-choice:checked ~ .description #itop-ticket-mgmt-simple-ticket-enhanced-portal:not(:checked) ~ .description::after, #setup .module-selection-body .wiz-choice:checked ~ .description #itop-ticket-mgmt-itil-enhanced-portal:not(:checked) ~ .description::after {
|
||||||
|
content: "Legacy portal is no longer part of iTop, by leaving this option unchecked your portal users won't be able to access iTop anymore.";
|
||||||
|
display: block;
|
||||||
|
margin-top: 0.5em;
|
||||||
|
font-weight: bold;
|
||||||
|
color: rgba(230, 0, 0, 0.722);
|
||||||
|
}
|
||||||
.mfp-close {
|
.mfp-close {
|
||||||
cursor: pointer !important;
|
cursor: pointer !important;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3131,6 +3131,18 @@ span.search-button, span.refresh-button {
|
|||||||
height: 28em;
|
height: 28em;
|
||||||
overflow: auto;
|
overflow: auto;
|
||||||
border: #ccc 1px solid;
|
border: #ccc 1px solid;
|
||||||
|
.wiz-choice:checked ~ .description{
|
||||||
|
#itop-ticket-mgmt-simple-ticket-enhanced-portal:not(:checked),
|
||||||
|
#itop-ticket-mgmt-itil-enhanced-portal:not(:checked){
|
||||||
|
~ .description::after {
|
||||||
|
content: "Legacy portal is no longer part of iTop, by leaving this option unchecked your portal users won't be able to access iTop anymore.";
|
||||||
|
display: block;
|
||||||
|
margin-top: 0.5em;
|
||||||
|
font-weight: bold;
|
||||||
|
color: #e60000b8;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
.mfp-close {
|
.mfp-close {
|
||||||
|
|||||||
@@ -99,8 +99,8 @@
|
|||||||
<options type="array">
|
<options type="array">
|
||||||
<choice>
|
<choice>
|
||||||
<extension_code>itop-ticket-mgmt-simple-ticket-enhanced-portal</extension_code>
|
<extension_code>itop-ticket-mgmt-simple-ticket-enhanced-portal</extension_code>
|
||||||
<title>Enhanced Customer Portal</title>
|
<title>Customer Portal</title>
|
||||||
<description>Replace the built-in customer portal with a more modern version, working better with hand-held devices and bringing new features</description>
|
<description><![CDATA[Modern & responsive portal for the end-users]]></description>
|
||||||
<modules type="array">
|
<modules type="array">
|
||||||
<module>itop-portal</module>
|
<module>itop-portal</module>
|
||||||
<module>itop-portal-base</module>
|
<module>itop-portal-base</module>
|
||||||
@@ -134,8 +134,8 @@
|
|||||||
</choice>
|
</choice>
|
||||||
<choice>
|
<choice>
|
||||||
<extension_code>itop-ticket-mgmt-itil-enhanced-portal</extension_code>
|
<extension_code>itop-ticket-mgmt-itil-enhanced-portal</extension_code>
|
||||||
<title>Enhanced Customer Portal</title>
|
<title>Customer Portal</title>
|
||||||
<description>Replace the built-in customer portal with a more modern version, working better with hand-held devices and bringing new features</description>
|
<description><![CDATA[Modern & responsive portal for the end-users]]></description>
|
||||||
<modules type="array">
|
<modules type="array">
|
||||||
<module>itop-portal</module>
|
<module>itop-portal</module>
|
||||||
<module>itop-portal-base</module>
|
<module>itop-portal-base</module>
|
||||||
|
|||||||
@@ -1,17 +1,5 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<itop_design xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="1.6">
|
<itop_design xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="1.6">
|
||||||
<constants>
|
|
||||||
<constant id="PORTAL_TYPE_TO_CLASS" xsi:type="string" _delta="redefine"><![CDATA[{"service_request":"UserRequest","incident":"Incident"}]]></constant>
|
|
||||||
<constant id="PORTAL_INCIDENT_PUBLIC_LOG" xsi:type="string" _delta="define"><![CDATA[public_log]]></constant>
|
|
||||||
<constant id="PORTAL_INCIDENT_USER_COMMENT" xsi:type="string" _delta="define"><![CDATA[user_comment]]></constant>
|
|
||||||
<constant id="PORTAL_INCIDENT_FORM_ATTRIBUTES" xsi:type="string" _delta="define"><![CDATA[title,description,impact,urgency]]></constant>
|
|
||||||
<constant id="PORTAL_INCIDENT_TYPE" xsi:type="string" _delta="define"><![CDATA[]]></constant>
|
|
||||||
<constant id="PORTAL_INCIDENT_LIST_ZLIST" xsi:type="string" _delta="define"><![CDATA[finalclass,title,start_date,status,servicesubcategory_id,priority,caller_id]]></constant>
|
|
||||||
<constant id="PORTAL_INCIDENT_CLOSED_ZLIST" xsi:type="string" _delta="define"><![CDATA[title,start_date,close_date,servicesubcategory_id]]></constant>
|
|
||||||
<constant id="PORTAL_INCIDENT_DETAILS_ZLIST" xsi:type="string" _delta="define"><![CDATA[{"col:left":["ref","caller_id","servicesubcategory_id","title","description","solution"],"col:right":["status","priority","start_date","resolution_date","last_update","agent_id"]}]]></constant>
|
|
||||||
<constant id="PORTAL_INCIDENT_DISPLAY_QUERY" xsi:type="string" _delta="define"><![CDATA[SELECT Incident WHERE org_id = :contact->org_id AND caller_id = :contact->id]]></constant>
|
|
||||||
<constant id="PORTAL_INCIDENT_DISPLAY_POWERUSER_QUERY" xsi:type="string" _delta="define"><![CDATA[SELECT Incident WHERE org_id = :contact->org_id]]></constant>
|
|
||||||
</constants>
|
|
||||||
<classes>
|
<classes>
|
||||||
<class id="Incident" _delta="define">
|
<class id="Incident" _delta="define">
|
||||||
<parent>Ticket</parent>
|
<parent>Ticket</parent>
|
||||||
|
|||||||
@@ -1,9 +1,8 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<itop_design xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="1.6">
|
<itop_design xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="1.6">
|
||||||
<portals>
|
<portals>
|
||||||
<portal id="legacy_portal" _delta="delete" /> <!-- TODO: voir si opportun de renommer au lieu de delete+define -->
|
|
||||||
<portal id="itop-portal" _delta="define"><!-- ID must match module_design[id] -->
|
<portal id="itop-portal" _delta="define"><!-- ID must match module_design[id] -->
|
||||||
<url>pages/exec.php?exec_module=itop-portal-base&exec_page=index.php&portal_id=itop-portal</url><!-- portal_id must match module_design[id] -->
|
<url>pages/exec.php?exec_module=itop-portal-base&exec_page=index.php&portal_id=itop-portal</url><!-- portal_id must match module_design[id] -->
|
||||||
<rank>1.0</rank>
|
<rank>1.0</rank>
|
||||||
<handler />
|
<handler />
|
||||||
<allow>
|
<allow>
|
||||||
|
|||||||
@@ -1,17 +1,5 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<itop_design xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="1.6">
|
<itop_design xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="1.6">
|
||||||
<constants>
|
|
||||||
<constant id="PORTAL_TYPE_TO_CLASS" xsi:type="string" _delta="redefine"><![CDATA[{"service_request":"UserRequest","incident":"Incident"}]]></constant>
|
|
||||||
<constant id="PORTAL_USERREQUEST_PUBLIC_LOG" xsi:type="string" _delta="define"><![CDATA[public_log]]></constant>
|
|
||||||
<constant id="PORTAL_USERREQUEST_USER_COMMENT" xsi:type="string" _delta="define"><![CDATA[user_comment]]></constant>
|
|
||||||
<constant id="PORTAL_USERREQUEST_FORM_ATTRIBUTES" xsi:type="string" _delta="define"><![CDATA[title,description,impact,urgency]]></constant>
|
|
||||||
<constant id="PORTAL_USERREQUEST_TYPE" xsi:type="string" _delta="define"><![CDATA[]]></constant>
|
|
||||||
<constant id="PORTAL_USERREQUEST_LIST_ZLIST" xsi:type="string" _delta="define"><![CDATA[finalclass,title,start_date,status,servicesubcategory_id,priority,caller_id]]></constant>
|
|
||||||
<constant id="PORTAL_USERREQUEST_CLOSED_ZLIST" xsi:type="string" _delta="define"><![CDATA[title,start_date,close_date,servicesubcategory_id]]></constant>
|
|
||||||
<constant id="PORTAL_USERREQUEST_DETAILS_ZLIST" xsi:type="string" _delta="define"><![CDATA[{"col:left":["ref","caller_id","servicesubcategory_id","title","description","solution"],"col:right":["status","priority","start_date","resolution_date","last_update","agent_id"]}]]></constant>
|
|
||||||
<constant id="PORTAL_USERREQUEST_DISPLAY_QUERY" xsi:type="string" _delta="define"><![CDATA[SELECT UserRequest WHERE org_id = :contact->org_id AND caller_id = :contact->id]]></constant>
|
|
||||||
<constant id="PORTAL_USERREQUEST_DISPLAY_POWERUSER_QUERY" xsi:type="string" _delta="define"><![CDATA[SELECT UserRequest WHERE org_id = :contact->org_id]]></constant>
|
|
||||||
</constants>
|
|
||||||
<classes>
|
<classes>
|
||||||
<class id="UserRequest" _delta="define">
|
<class id="UserRequest" _delta="define">
|
||||||
<parent>Ticket</parent>
|
<parent>Ticket</parent>
|
||||||
|
|||||||
@@ -1,23 +1,5 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<itop_design xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="1.6">
|
<itop_design xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="1.6">
|
||||||
<constants>
|
|
||||||
<constant id="PORTAL_USERREQUEST_PUBLIC_LOG" xsi:type="string" _delta="define"><![CDATA[public_log]]></constant>
|
|
||||||
<constant id="PORTAL_USERREQUEST_USER_COMMENT" xsi:type="string" _delta="define">
|
|
||||||
<![CDATA[user_comment]]></constant>
|
|
||||||
<constant id="PORTAL_USERREQUEST_FORM_ATTRIBUTES" xsi:type="string" _delta="define">
|
|
||||||
<![CDATA[title,description,impact,urgency]]></constant>
|
|
||||||
<constant id="PORTAL_USERREQUEST_TYPE" xsi:type="string" _delta="define"><![CDATA[request_type]]></constant>
|
|
||||||
<constant id="PORTAL_USERREQUEST_LIST_ZLIST" xsi:type="string" _delta="define">
|
|
||||||
<![CDATA[finalclass,title,start_date,status,servicesubcategory_id,priority,caller_id]]></constant>
|
|
||||||
<constant id="PORTAL_USERREQUEST_CLOSED_ZLIST" xsi:type="string" _delta="define">
|
|
||||||
<![CDATA[title,start_date,close_date,servicesubcategory_id]]></constant>
|
|
||||||
<constant id="PORTAL_USERREQUEST_DETAILS_ZLIST" xsi:type="string" _delta="define">
|
|
||||||
<![CDATA[{"col:left":["ref","caller_id","servicesubcategory_id","title","description","solution"],"col:right":["status","priority","start_date","resolution_date","last_update","agent_id"]}]]></constant>
|
|
||||||
<constant id="PORTAL_USERREQUEST_DISPLAY_QUERY" xsi:type="string" _delta="define">
|
|
||||||
<![CDATA[SELECT UserRequest WHERE org_id = :contact->org_id AND caller_id = :contact->id]]></constant>
|
|
||||||
<constant id="PORTAL_USERREQUEST_DISPLAY_POWERUSER_QUERY" xsi:type="string" _delta="define">
|
|
||||||
<![CDATA[SELECT UserRequest WHERE org_id = :contact->org_id]]></constant>
|
|
||||||
</constants>
|
|
||||||
<classes>
|
<classes>
|
||||||
<class id="UserRequest" _delta="define">
|
<class id="UserRequest" _delta="define">
|
||||||
<parent>Ticket</parent>
|
<parent>Ticket</parent>
|
||||||
|
|||||||
@@ -2,17 +2,6 @@
|
|||||||
<itop_design xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="1.6">
|
<itop_design xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="1.6">
|
||||||
<constants>
|
<constants>
|
||||||
<constant id="RESPONSE_TICKET_SLT_QUERY" xsi:type="string" _delta="define"><![CDATA[SELECT SLT AS slt JOIN lnkSLAToSLT AS l1 ON l1.slt_id=slt.id JOIN SLA AS sla ON l1.sla_id=sla.id JOIN lnkCustomerContractToService AS l2 ON l2.sla_id=sla.id JOIN CustomerContract AS sc ON l2.customercontract_id=sc.id WHERE slt.metric = :metric AND l2.service_id = :this->service_id AND sc.org_id = :this->org_id AND slt.request_type = :request_type AND slt.priority = :this->priority]]></constant>
|
<constant id="RESPONSE_TICKET_SLT_QUERY" xsi:type="string" _delta="define"><![CDATA[SELECT SLT AS slt JOIN lnkSLAToSLT AS l1 ON l1.slt_id=slt.id JOIN SLA AS sla ON l1.sla_id=sla.id JOIN lnkCustomerContractToService AS l2 ON l2.sla_id=sla.id JOIN CustomerContract AS sc ON l2.customercontract_id=sc.id WHERE slt.metric = :metric AND l2.service_id = :this->service_id AND sc.org_id = :this->org_id AND slt.request_type = :request_type AND slt.priority = :this->priority]]></constant>
|
||||||
<constant id="PORTAL_POWER_USER_PROFILE" xsi:type="string" _delta="define"><![CDATA[Portal power user]]></constant>
|
|
||||||
<constant id="PORTAL_SERVICECATEGORY_QUERY" xsi:type="string" _delta="define"><![CDATA[SELECT Service AS s JOIN lnkCustomerContractToService AS l1 ON l1.service_id=s.id JOIN CustomerContract AS cc ON l1.customercontract_id=cc.id WHERE cc.org_id = :org_id AND s.status != 'obsolete']]></constant>
|
|
||||||
<constant id="PORTAL_SERVICE_SUBCATEGORY_QUERY" xsi:type="string" _delta="define"><![CDATA[SELECT ServiceSubcategory WHERE service_id = :svc_id AND ServiceSubcategory.status != 'obsolete']]></constant>
|
|
||||||
<constant id="PORTAL_VALIDATE_SERVICECATEGORY_QUERY" xsi:type="string" _delta="define"><![CDATA[SELECT Service AS s JOIN lnkCustomerContractToService AS l1 ON l1.service_id=s.id JOIN CustomerContract AS cc ON l1.customercontract_id=cc.id WHERE cc.org_id = :org_id AND s.id = :id AND s.status != 'obsolete']]></constant>
|
|
||||||
<constant id="PORTAL_VALIDATE_SERVICESUBCATEGORY_QUERY" xsi:type="string" _delta="define"><![CDATA[SELECT ServiceSubcategory AS Sub JOIN Service AS Svc ON Sub.service_id = Svc.id WHERE Sub.id=:id AND Sub.status != 'obsolete']]></constant>
|
|
||||||
<constant id="PORTAL_ALL_PARAMS" xsi:type="string" _delta="define"><![CDATA[from_service_id,org_id,caller_id,service_id,servicesubcategory_id,title,description,impact,emergency,moreinfo,caller_id,start_date,end_date,duration,impact_duration]]></constant>
|
|
||||||
<constant id="PORTAL_SET_TYPE_FROM" xsi:type="string" _delta="define"><![CDATA[request_type]]></constant>
|
|
||||||
<constant id="PORTAL_TYPE_TO_CLASS" xsi:type="string" _delta="define"><![CDATA[]]></constant>
|
|
||||||
<constant id="PORTAL_TICKETS_SEARCH_CRITERIA" xsi:type="string" _delta="define"><![CDATA[ref,start_date,close_date,service_id,caller_id]]></constant>
|
|
||||||
<constant id="PORTAL_TICKETS_SEARCH_FILTER_service_id" xsi:type="string" _delta="define"><![CDATA[SELECT Service AS s JOIN lnkCustomerContractToService AS l1 ON l1.service_id=s.id JOIN CustomerContract AS cc ON l1.customercontract_id=cc.id WHERE cc.org_id = :org_id AND s.status != 'obsolete']]></constant>
|
|
||||||
<constant id="PORTAL_TICKETS_SEARCH_FILTER_caller_id" xsi:type="string" _delta="define"><![CDATA[SELECT Person WHERE org_id = :org_id]]></constant>
|
|
||||||
</constants>
|
</constants>
|
||||||
<classes>
|
<classes>
|
||||||
<class id="Ticket" _delta="define">
|
<class id="Ticket" _delta="define">
|
||||||
|
|||||||
Binary file not shown.
|
Before Width: | Height: | Size: 158 B |
Binary file not shown.
|
Before Width: | Height: | Size: 2.7 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 176 B |
Binary file not shown.
|
Before Width: | Height: | Size: 129 B |
1445
portal/index.php
1445
portal/index.php
File diff suppressed because it is too large
Load Diff
@@ -1,237 +0,0 @@
|
|||||||
html, body {
|
|
||||||
margin: 0;
|
|
||||||
padding:0;
|
|
||||||
overflow-y: auto;
|
|
||||||
font-family: Arial,Helvetica,Verdana,sans-serif;
|
|
||||||
font-size: 8pt;
|
|
||||||
}
|
|
||||||
#portal {
|
|
||||||
height: 100%;
|
|
||||||
}
|
|
||||||
#content {
|
|
||||||
margin: auto;
|
|
||||||
padding-left: 10px;
|
|
||||||
padding-right: 10px;
|
|
||||||
no.text-align: center;
|
|
||||||
overflow-y: auto;
|
|
||||||
max-width: 90%;
|
|
||||||
min-width: 960px;
|
|
||||||
position: relative;
|
|
||||||
display: block;
|
|
||||||
clear: both;
|
|
||||||
}
|
|
||||||
div#portal #welcome {
|
|
||||||
background: url("./images/dockbar_bg.png") repeat-x scroll 0 0 #97A1AE;
|
|
||||||
border-bottom: 1px solid #636364;
|
|
||||||
font-size: 13px;
|
|
||||||
padding: 1px 5px;
|
|
||||||
position: relative;
|
|
||||||
z-index: 300;
|
|
||||||
text-align:right;
|
|
||||||
color: #2C2F34;
|
|
||||||
font-weight: bold;
|
|
||||||
text-shadow: 1px 1px #FFFFFF;
|
|
||||||
}
|
|
||||||
div#portal #banner {
|
|
||||||
height: 116px;
|
|
||||||
display: block;
|
|
||||||
vertical-align:middle;
|
|
||||||
background-color: #f6f6f1;
|
|
||||||
background: none repeat scroll 0 0 transparent;
|
|
||||||
margin: 0 auto;
|
|
||||||
max-width: 90%;
|
|
||||||
min-width: 960px;
|
|
||||||
position: relative;
|
|
||||||
margin-bottom: 1em;
|
|
||||||
}
|
|
||||||
|
|
||||||
div#portal #logo {
|
|
||||||
background: url(./images/company_logo.png?v=2) 0 50% no-repeat;
|
|
||||||
margin-top:6px;
|
|
||||||
margin-bottom:6px;
|
|
||||||
margin-left:20px;
|
|
||||||
margin-right:20px;
|
|
||||||
height: 60px;
|
|
||||||
border: 0;
|
|
||||||
vertical-align: middle;
|
|
||||||
text-align: center;
|
|
||||||
display: block;
|
|
||||||
line-height: 116px;
|
|
||||||
}
|
|
||||||
#menu {
|
|
||||||
background: url("./images/bg.png") repeat-x scroll 0 0 #414445;
|
|
||||||
clear: both;
|
|
||||||
min-height: 2.4em;
|
|
||||||
line-height: 3em;
|
|
||||||
-moz-border-radius: 4px;
|
|
||||||
vertical-align: middle;
|
|
||||||
}
|
|
||||||
#portal_menu {
|
|
||||||
height: 60px;
|
|
||||||
}
|
|
||||||
|
|
||||||
div.button {
|
|
||||||
font-size: 1.1em;
|
|
||||||
font-weight: bold;
|
|
||||||
text-decoration: none;
|
|
||||||
}
|
|
||||||
a.button , a.button:visited {
|
|
||||||
line-height: 1.2em;
|
|
||||||
color: #FFFFFF;
|
|
||||||
font-size: 1.1em;
|
|
||||||
font-weight: bold;
|
|
||||||
text-decoration: none;
|
|
||||||
display: inline;
|
|
||||||
clear:both;
|
|
||||||
}
|
|
||||||
a.button:hover span {
|
|
||||||
background: #000;
|
|
||||||
}
|
|
||||||
a.button span {
|
|
||||||
vertical-align:middle;
|
|
||||||
margin: 0 1px;
|
|
||||||
padding: 5px;
|
|
||||||
padding-left: 15px;
|
|
||||||
padding-right: 15px;
|
|
||||||
-moz-border-radius: 4px;
|
|
||||||
border-radius: 4px;
|
|
||||||
}
|
|
||||||
|
|
||||||
#close_form_table {
|
|
||||||
width: 100%;
|
|
||||||
padding: 20px;
|
|
||||||
}
|
|
||||||
|
|
||||||
#request_details td {
|
|
||||||
text-align:left;
|
|
||||||
}
|
|
||||||
|
|
||||||
#request_details td fieldset{
|
|
||||||
xxxheight:100%;
|
|
||||||
}
|
|
||||||
|
|
||||||
#form_details {
|
|
||||||
display: inline-block;
|
|
||||||
}
|
|
||||||
|
|
||||||
div.wizContainer
|
|
||||||
{
|
|
||||||
border: 1px solid #C8C9CA;
|
|
||||||
-moz-border-radius: 4px 4px 4px 4px;
|
|
||||||
background-color: #fff;
|
|
||||||
padding: 3px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.wizContainer table {
|
|
||||||
nodisplay: inline-block;
|
|
||||||
text-align: left;
|
|
||||||
}
|
|
||||||
|
|
||||||
#user_request_comment {
|
|
||||||
width: 30em;
|
|
||||||
height: 20em;
|
|
||||||
}
|
|
||||||
|
|
||||||
#buttons {
|
|
||||||
margin-top: 1em;
|
|
||||||
}
|
|
||||||
div#buttons #btn_cancel {
|
|
||||||
margin-right: 50px;
|
|
||||||
}
|
|
||||||
|
|
||||||
div#buttons #btn_back {
|
|
||||||
margin-left: 50px;
|
|
||||||
margin-right: 5px;
|
|
||||||
}
|
|
||||||
|
|
||||||
div#buttons #btn_next {
|
|
||||||
margin-left: 5px;
|
|
||||||
}
|
|
||||||
|
|
||||||
div#buttons #btn_finish {
|
|
||||||
margin-left: 5px;
|
|
||||||
}
|
|
||||||
table.listContainer {
|
|
||||||
clear: both;
|
|
||||||
width: 100%;
|
|
||||||
}
|
|
||||||
h1 {
|
|
||||||
background: url("./images/header_bg.png") repeat-x scroll 0 0 #D4D4D4;
|
|
||||||
border-color: #C8C9CA #9E9E9E #9E9E9E #C8C9CA;
|
|
||||||
border-style: solid;
|
|
||||||
border-width: 1px;
|
|
||||||
font-size: 1.1em;
|
|
||||||
font-weight: bold;
|
|
||||||
color: #222222;
|
|
||||||
font-weight: bold;
|
|
||||||
text-shadow: 1px 1px #FFFFFF;
|
|
||||||
padding: 5px;
|
|
||||||
-moz-border-radius: 4px 4px 4px 4px;
|
|
||||||
margin-top: 5px;
|
|
||||||
}
|
|
||||||
|
|
||||||
div.DrawerHandle {
|
|
||||||
display:none;
|
|
||||||
}
|
|
||||||
div.HRDrawer {
|
|
||||||
background: transparent;
|
|
||||||
border: 0;
|
|
||||||
height: 0.5em;
|
|
||||||
}
|
|
||||||
|
|
||||||
.SearchDrawer {
|
|
||||||
background-color: #F9EDBF;
|
|
||||||
border: 0;
|
|
||||||
-moz-border-radius: 4px 4px 4px 4px;
|
|
||||||
}
|
|
||||||
.SearchDrawer label {
|
|
||||||
background: transparent;
|
|
||||||
}
|
|
||||||
#open_incidents, #open_requests, #open_changes, #request_details {
|
|
||||||
margin-bottom: 1em;
|
|
||||||
}
|
|
||||||
legend {
|
|
||||||
background: url("./images/header_bg.png") repeat-x scroll 0 0 #D4D4D4;
|
|
||||||
border-color: #C8C9CA #9E9E9E #9E9E9E #C8C9CA;
|
|
||||||
border-style: solid;
|
|
||||||
border-width: 1px;
|
|
||||||
font-size: 1.1em;
|
|
||||||
font-weight: bold;
|
|
||||||
color: #222222;
|
|
||||||
font-weight: bold;
|
|
||||||
text-shadow: 1px 1px #FFFFFF;
|
|
||||||
padding: 5px;
|
|
||||||
-moz-border-radius: 4px 4px 4px 4px;
|
|
||||||
margin-top:0;
|
|
||||||
}
|
|
||||||
table.details > tbody > tr > td {
|
|
||||||
padding-bottom: 5px;
|
|
||||||
padding-top: 3px;
|
|
||||||
padding-right: 5px;
|
|
||||||
border: 0;
|
|
||||||
}
|
|
||||||
.label {
|
|
||||||
font-weight: bold;
|
|
||||||
}
|
|
||||||
.caselog {
|
|
||||||
display:block;
|
|
||||||
width: 100%;
|
|
||||||
}
|
|
||||||
.caselog textarea {
|
|
||||||
resize: none;
|
|
||||||
}
|
|
||||||
.edit_item {
|
|
||||||
margin-bottom: 1em;
|
|
||||||
}
|
|
||||||
div.edit_item span div table {
|
|
||||||
width: 100%;
|
|
||||||
}
|
|
||||||
div.edit_item span div table tbody tr td textarea{
|
|
||||||
width: 99%;
|
|
||||||
}
|
|
||||||
div#ticket_shortcuts form {
|
|
||||||
display: inline-block;
|
|
||||||
}
|
|
||||||
.cke_contents {
|
|
||||||
border: 1px #C8C9CA solid !important;
|
|
||||||
}
|
|
||||||
@@ -1,72 +0,0 @@
|
|||||||
|
|
||||||
--- Customization of the portal
|
|
||||||
|
|
||||||
This is the way it is working now and is highly subject to change...
|
|
||||||
|
|
||||||
|
|
||||||
Configuration (itop-config.php)
|
|
||||||
===============================
|
|
||||||
portal_tickets: CSV value to specify which ticket classes are enabled (default to 'UserRequest')
|
|
||||||
|
|
||||||
|
|
||||||
Common constants (XML)
|
|
||||||
======================
|
|
||||||
PORTAL_POWER_USER_PROFILE: Name of the profile that determines who can see the ticket of her organization (not only the tickets she is caller for)
|
|
||||||
PORTAL_SERVICECATEGORY_QUERY: OQL to list the services (parameters available: org_id)
|
|
||||||
PORTAL_SERVICE_SUBCATEGORY_QUERY: OQL to list the service subcategories (parameters available: org_id, svc_id)
|
|
||||||
PORTAL_VALIDATE_SERVICECATEGORY_QUERY: OQL to check the service again (security against malicious HTTP POSTs)
|
|
||||||
PORTAL_VALIDATE_SERVICESUBCATEGORY_QUERY: OQL to check the service again (security against malicious HTTP POSTs)
|
|
||||||
PORTAL_ALL_PARAMS: parameters that the wizard will kindly propagate through its pages (mixing should not be a problem, default value could be cleaned a little...)
|
|
||||||
PORTAL_SET_TYPE_FROM: attribute of the class ServiceSubcategory determining the request type
|
|
||||||
PORTAL_TYPE_TO_CLASS: optional mapping from the request types to ticket classes
|
|
||||||
PORTAL_TICKETS_SEARCH_CRITERIA: comma separated list of search criteria (attcodes) for closed tickets
|
|
||||||
PORTAL_TICKETS_SEARCH_FILTER_attcode: an OQL query to limit the list of values available in the search form (drop-down list). One define per entry in PORTAL_TICKETS_SEARCH_CRITERIA
|
|
||||||
|
|
||||||
|
|
||||||
Caution: Hardcoded stuff
|
|
||||||
========================
|
|
||||||
Classes Service and ServiceSubcategory
|
|
||||||
A user can update a ticket (new/assigned)
|
|
||||||
A user can close a ticket (resolved) (user_satisfaction is hardcoded though user_comment is not)
|
|
||||||
|
|
||||||
|
|
||||||
Constants depending on the class of ticket
|
|
||||||
==========================================
|
|
||||||
For each ticket class enabled, you will have to define these constants:
|
|
||||||
|
|
||||||
PORTAL_<TICKET-CLASS>_PUBLIC_LOG: name of the public log attribute
|
|
||||||
PORTAL_<TICKET-CLASS>_USER_COMMENT: name of the user comment attribute (legacy, used to be user_commmmment)
|
|
||||||
PORTAL_<TICKET-CLASS>_FORM_ATTRIBUTES: attributes proposed to the end-user in the edition form
|
|
||||||
PORTAL_<TICKET-CLASS>_TYPE: optional attribute to be set with the value of "request type"
|
|
||||||
PORTAL_<TICKET-CLASS>_LIST_ZLIST: list of attribute displayed in the lists (opened and resolved)
|
|
||||||
PORTAL_<TICKET-CLASS>_CLOSED_ZLIST: list of attribute displayed in the list of closed tickets
|
|
||||||
PORTAL_<TICKET-CLASS>_DETAILS_ZLIST: selection and presentation of attributes in the page that shows their details
|
|
||||||
PORTAL_<TICKET-CLASS>_DISPLAY_QUERY: selection of displayable objects (use parameters contact->attcode to check things against the user/contact)
|
|
||||||
PORTAL_<TICKET-CLASS>_DISPLAY_POWERUSER_QUERY: selection of displayable objects for power users (use parameters contact->attcode to check things against the user/contact)
|
|
||||||
|
|
||||||
|
|
||||||
How to add a type of ticket (example: Incident)
|
|
||||||
===============================================
|
|
||||||
1) Add it to the list of supported tickets classes: itop-config.php/portal_tickets
|
|
||||||
2) Define PORTAL_SET_TYPE_FROM (if not already done) as the attribute of ServiceSubcategory, that will define the request type, depending on the user selection
|
|
||||||
3) Map the different values of this request type (in class ServiceSubcategory) to the supported ticket classes
|
|
||||||
YOU MUST MAKE SURE THAT ANY OF THE VALUE HAS A MAPPING SO AS TO EXCLUDE SUBCATEGORIES IF THE CORRESPONDING CLASS ARE NOT ENABLED IN THE CONFIG.
|
|
||||||
4) Make sure that the queries PORTAL_SERVICE_SUBCATEGORY_QUERY and PORTAL_VALIDATE_SERVICESUBCATEGORY_QUERY will not exclude the expected type
|
|
||||||
5) Define the various constants for this class (PORTAL_<MY-CLASS>_XXXX).
|
|
||||||
6) Adjust PORTAL_TICKETS_SEARCH_CRITERIA. Those criteria are common to all types of tickets. Giving too many criteria can lead to confusion.
|
|
||||||
7) Test, test and re-test!!!
|
|
||||||
|
|
||||||
|
|
||||||
How to copy the request type to the ticket
|
|
||||||
==========================================
|
|
||||||
1) Define PORTAL_SET_TYPE_FROM (if not already done) as the attribute of ServiceSubcategory, that will define the request type, depending on the user selection
|
|
||||||
2) Define PORTAL_<TICKET-CLASS>_TYPE as the tiket attribute code to which the request type will be copied as is. There is no mapping.
|
|
||||||
|
|
||||||
|
|
||||||
Behavior of the lists when handling several types of tickets
|
|
||||||
============================================================
|
|
||||||
There are three lists: opened tickets, resolved tickets and closed tickets.
|
|
||||||
The following explanation applies to any of those lists.
|
|
||||||
* If no item has been found, one single message is displayed (no request of this category).
|
|
||||||
* If a number of items of only one category have been found, the list is displayed as is.
|
|
||||||
* Otherwise, there are several types of tickets to display. Each sub-list is preceeded by the name of the corresponding class.
|
|
||||||
Reference in New Issue
Block a user