Installing the ]po[ Customer Portal

Disclaimer:
The following instructions assume that you are more or less familiar with CVS, the ]po[ Package Manager and eventually some minor coding. You should be always aware of the consequences the instructions have on your instance of ]po[. In doubt please contact support.  

Installing on ]po[ Version 4.x

1) Make sure you have installed the following packages and "cvs update" them if necessary:

  • intranet-sencha
  • intranet-customer-portal

2) CVS update /packages/intranet-core/www/images

cd /web/projop/packages/intranet-core/www/images
cvs update -dPA

3) Create a symbolic link to the SENCHA libs:  

cd /web/projop/www/
ln -s ../packages/intranet-sencha/www/resources/ ./resources

3) CVS update /packages/intranet-core/www/js

cd /web/projop/packages/intranet-core/www/js
cvs update -dPA

Installing on ]po[ Version 3.5

As always: Please perform a backup of the DB and the web/projop/packages folder before any new installation.
Please note that in the instructions given below, some backup-files are created for easy roll-back. 
 

This installation procedure has been tested for version 3.5.
Versions < 3.5 have not been tested, please get in touch with us in case installation fails.

1.) Open a console, login as user projop and checkout package "intranet-customer-portal", login as user projop

su - projop
cd /web/projop/packages/
cvs checkout -r HEAD intranet-customer-portal

2.) Checkout package "intranet-sencha"

cd /web/projop/packages/
cvs checkout -r HEAD intranet-sencha

3) Use Package Manager to install both packages:

http://[YOUR_SERVER]/acs-admin/apm/  

When prompted: Requires intranet-core of version >= 4.0.1.0.0.  please check: "Force the install"

4) Create a symbolic link to the SENCHA libs:  

cd /web/projop/www/
ln -s ../packages/intranet-sencha/www/resources/ ./resources

5) cvs update file intranet-design-procs   

cd /web/projop/packages/intranet-core/tcl/
cp intranet-design-procs.tcl intranet-design-procs.tcl.bak
cvs update -r b3-5-0-patches intranet-design-procs.tcl 

Note:
In case you are running a ]po[ version < 3.5 patch the file manually.
Include the following lines:

if {[llength [info procs im_list_financial_documents_component]]} {
        append html "<link rel=StyleSheet type=text/css href=\"/intranet-sencha/css/ext-all.css\" />\n"
        append html "<link rel=StyleSheet type=text/css href=\"/intranet-customer-portal/intranet-customer-portal.css\" />\n"
        append html "<link rel=StyleSheet type=text/css href=\"/intranet-customer-portal/resources/css/BoxSelect.css\" />\n"
        append html "<script language='javascript' src='http://www.project-open.org/intranet-sencha/js/ext-all.js'></script>\n"
        append html "<script language='javascript' src='http://www.project-open.org/intranet-customer-portal/resources/js/BoxSelect.js'></script>\n"
}
right before line:
if {$openacs54_p} { template::head::add_css -href $system_css -media "screen" -order "6" } else { append html "<link rel=StyleSheet type=text/css href=\"$system_css\" media=screen>\n" }
  
6) Update style.saltnpepper.css from CVS HEAD
It should be rather unproblematic for to use the most recent version of the SALTNPEPPER skin also for version 3.5:   

cd /web/projop/packages/intranet-core/www/style
cp style.saltnpepper.css style.saltnpepper.css.bak
cvs update -dPA style.saltnpepper.css

7) Patch /web/projop/packages/intranet-core/www/projects/view.tcl

Before patch:
if {$execution_project_enabled_p && [im_permission $current_user_id add_projects]} {
    append admin_html_content "
    <li><A href=\"[export_vars -base $clone_url { {parent_project_id $project_id} {company_id [im_company_internal]} { clone_postfix "Execution Project"} }]\">[lang::message::lookup "" intranet-core.Execution_Project "Create an 'Executi\
on Project'"]
</A>[im_gif -translate_p 0 help $exec_pr_help]</li>\n"
}

set admin_html ""
if {"" != $admin_html_content} {
    set admin_html_content "<ul>$admin_html_content</ul>"
    set admin_html [im_table_with_title "[_ intranet-core.Admin_Project]" $admin_html_content]
}

After patch: 

if {$execution_project_enabled_p && [im_permission $current_user_id add_projects]} {
    append admin_html_content "
    <li><A href=\"[export_vars -base $clone_url { {parent_project_id $project_id} {company_id [im_company_internal]} { clone_postfix "Execution Project"} }]\">[lang::message::lookup "" intranet-core.Execution_Project "Create an 'Executi\
on Project'"]
</A>[im_gif -translate_p 0 help $exec_pr_help]</li>\n"
}

if { [apm_package_enabled_p "intranet-customer-portal"] && ( [im_profile::member_p -profile_id [im_pm_group_id] -user_id $user_id] || [im_profile::member_p -profile_id [im_admin_group_id] -user_id $user_id]) } {
    append admin_html_content "<li><A href=\"/intranet-customer-portal/create-dir-structure?project_id=$project_id\">[lang::message::lookup "" intranet-customer-portal.CreateFolderStructure "Create folder structure"]</A></li>\n"
}

set admin_html ""
if {"" != $admin_html_content} {
    set admin_html_content "<ul>$admin_html_content</ul>"
    set admin_html [im_table_with_title "[_ intranet-core.Admin_Project]" $admin_html_content]
}


8) Patch /web/projop/packages/intranet-invoices/www/new-2.tcl

Before:

if {!$invoice_exists_p} {

    # Let's create the new invoice
    set invoice_id [db_exec_plsql create_invoice ""]

    # Audit the creation of the invoice
    im_audit -object_type "im_invoice" -object_id $invoice_id -action after_create -status_id $cost_status_id -type_id $cost_type_id

}

# Check if the cost item was changed via outside SQL
im_audit -object_type "im_invoice" -object_id $invoice_id -action before_update

After:
if {!$invoice_exists_p} {

    # Let's create the new invoice
    set invoice_id [db_exec_plsql create_invoice ""]

    # Audit the creation of the invoice
    im_audit -object_type "im_invoice" -object_id $invoice_id -action after_create -status_id $cost_status_id -type_id $cost_type_id

}

# Give company_contact_id READ permissions - required for Customer Portal
permission::grant -object_id $invoice_id -party_id $company_contact_id -privilege "read"

# Check if the cost item was changed via outside SQL
im_audit -object_type "im_invoice" -object_id $invoice_id -action before_update


9) CVS update /packages/intranet-core/www/images/help_12_12.gif

cd /web/projop/packages/intranet-core/www/images
cvs update -r HEAD help_12_12.gif

9) CVS update /packages/intranet-core/www/js/jquery.min.js

cd /web/projop/packages/intranet-core/www/js
cvs update -r HEAD jquery.min.js

  

Configuration

The following steps are necessary to configure the package: 

  • Disable Sencha Margin Tracker
    http://[YOUR_SERVER]/intranet/admin/components/index?package%5fkey=&component%5flocation=&component%5fpage=%252fintranet%252fprojects%252findex
  • Disable Sencha Milestone Tracker
    http://[YOUR_SERVER]/intranet/admin/components/index?package_key=&component_location=&component_page=%252fintranet%252fprojects%252fview
  • Files uploaded are stored in a temporary folder before they eventually will moved to their final destination. Set parameter "TempPath" of the "intranet-customer-portal" accordingly. 
  • Most certainly you want users not allow to register. Set parameter "AllowSelfRegister" of package acs-authentication to "0". 
  • To use the workflow efficiently, please make sure that portlet "Home Workflow Inbox" is visible to Project Managers. 
  • Set notification texts (subject&body): /acs-lang/admin/message-list?package_key=intranet-customer-portal&locale=en_US
  • Menu items to be disabled for Customers
    * Workflow
    * Timesheet
    * Absences
    * Notes
    * Companies (since the only one they can see is its own)

  • Portlets to be disabled for Customers

    On Project tab:
    * Project WF Graph
    * Project WF Journal
    * Finance Summary

    * Trans Tasks (tab)
    * Assignments (tab)

    On Home tab:
    * Calendar (sysadmin can restore it, but currently is not so good-looking, so I would disable it)
    * Home ]po[ News
    * Filestorage

Troubleshooting 

  • If pages /intranet/projects/index and intranet/projects/view do not show correctly, please check if portlet "Milestone Tracker" is enabled. If so, disable it.
  • If no notifications are sent out, please follow instructions given at http://www.project-open.org/en/workflow-notifications#troubleshooting 
  • If files uploaded by the client do not show up in the Translation Task portlet, please verify parameter DirNameSourceLanguage of package intranet-customer-portal.


Tutorial

See http://www.project-open.org/en/tutorial-customer-portal for a user tutorial. 

  Contact Us
  Project Open Business Solutions S.L.

Calle Aprestadora 19, 12o-2a

08902 Hospitalet de Llobregat (Barcelona)

Spain

 Tel Europe: +34 609 953 751
 Tel US: +1 415 200 2465
 Mail: info@project-open.com