diff --git a/CRM/Core/BAO/Dashboard.php b/CRM/Core/BAO/Dashboard.php index 8cb4aa52ab6ecb82b1121089d6adbbe71f5b9507..c421f9f810e8eaee498e63faa93bf621fedb2b57 100644 --- a/CRM/Core/BAO/Dashboard.php +++ b/CRM/Core/BAO/Dashboard.php @@ -357,6 +357,7 @@ class CRM_Core_BAO_Dashboard extends CRM_Core_DAO_Dashboard { // check url is same as exiting entries, if yes just update existing $dashlet->url = CRM_Utils_Array::value('url', $params); $dashlet->find(TRUE); + $dashlet->name = self::getDashletName(CRM_Utils_Array::value('instanceURL', $params)); } else { $dashlet->id = $dashboardID; @@ -377,6 +378,16 @@ class CRM_Core_BAO_Dashboard extends CRM_Core_DAO_Dashboard { return $dashlet; } + static function getDashletName($url) { + $urlElements = explode('/', $url); + if ($urlElements[1] == 'dashlet') { + return $urlElements[2]; + } + elseif ($urlElements[1] == 'report') { + return 'report/' . $urlElements[3]; + } + return $url; + } /** * Update contact dashboard with new dashlet * diff --git a/CRM/Upgrade/Incremental/php/FourFour.php b/CRM/Upgrade/Incremental/php/FourFour.php index 042629c254ef880b8da94b6d7a14494280948d74..ca7665724ce1b28bbc709c6bf543d24c4f0e347e 100644 --- a/CRM/Upgrade/Incremental/php/FourFour.php +++ b/CRM/Upgrade/Incremental/php/FourFour.php @@ -214,6 +214,50 @@ VALUES {$insertStatus}"; $this->addTask('Patch word-replacement schema', 'wordReplacements_patch', $rev); } + function upgrade_4_4_4($rev) { + // task to process sql + $this->addTask(ts('Upgrade DB to %1: SQL', array(1 => '4.4.4')), 'task_4_4_x_runSql', $rev); + + // Consolidate activity contacts CRM-12274. + $this->addTask('Dashboard schema', 'dashboard'); + + return TRUE; + } + + static function dashboard(CRM_Queue_TaskContext $ctx) { + $upgrade = new CRM_Upgrade_Form(); + $query = " +ALTER TABLE civicrm_dashboard + ADD name varchar(64) COLLATE utf8_unicode_ci DEFAULT NULL COMMENT 'Internal name of dashlet.' AFTER domain_id "; + CRM_Core_DAO::executeQuery($query); + + $dashboard = new CRM_Core_DAO_Dashboard(); + $dashboard->find(); + while ($dashboard->fetch()) { + $urlElements = explode('/', $dashboard->url); + if ($urlElements[1] == 'dashlet') { + $url = explode('&', $urlElements[2]); + $name = $url[0]; + } + elseif ($urlElements[1] == 'report') { + $url = explode('&', $urlElements[3]); + $name = 'report/' .$url[0]; + } + $values .= " + WHEN {$dashboard->id} THEN '{$name}' + "; + } + + $query = " + UPDATE civicrm_dashboard + SET name = CASE id + {$values} + END; + "; + + CRM_Core_DAO::executeQuery($query); + } + /** * Update activity contacts CRM-12274 * diff --git a/xml/schema/Core/Dashboard.xml b/xml/schema/Core/Dashboard.xml index 3ff64f902e8a07c3bd6a71885348e9ec443dbf80..2c04c1a4643d2df55b832009135b52259852861c 100644 --- a/xml/schema/Core/Dashboard.xml +++ b/xml/schema/Core/Dashboard.xml @@ -29,6 +29,14 @@ <key>id</key> <add>3.1</add> </foreignKey> + <field> + <name>name</name> + <type>varchar</type> + <title>Dashlet Name</title> + <length>64</length> + <comment>Internal name of dashlet.</comment> + <add>4.4</add> + </field> <field> <name>label</name> <type>varchar</type> diff --git a/xml/templates/civicrm_navigation.tpl b/xml/templates/civicrm_navigation.tpl index c77bd53fe98667cdd949dc72ea58367123e610da..c5bfa7e6651773c9b5dbac909ad7f9943c92e307 100644 --- a/xml/templates/civicrm_navigation.tpl +++ b/xml/templates/civicrm_navigation.tpl @@ -96,13 +96,13 @@ INSERT INTO civicrm_mail_settings (domain_id, name, is_default, domain) VALUES ( -- activity and case dashlets INSERT INTO `civicrm_dashboard` - ( `domain_id`, `label`, `url`, `permission`, `permission_operator`, `column_no`, `is_minimized`, `is_active`, `weight`, `fullscreen_url`, `is_fullscreen`, `is_reserved`) + ( `domain_id`, `name`, `label`, `url`, `permission`, `permission_operator`, `column_no`, `is_minimized`, `is_active`, `weight`, `fullscreen_url`, `is_fullscreen`, `is_reserved`) VALUES - ( @domainID, '{ts escape="sql"}CiviCRM News{/ts}', 'civicrm/dashlet/blog&reset=1&snippet=5', 'access CiviCRM', NULL, 0, 0, 1, 0, 'civicrm/dashlet/blog&reset=1&snippet=5&context=dashletFullscreen', 1, 1), - ( @domainID, '{ts escape="sql"}Activities{/ts}', 'civicrm/dashlet/activity&reset=1&snippet=5', 'access CiviCRM', NULL, 0, 0, 1, 1, 'civicrm/dashlet/activity&reset=1&snippet=5&context=dashletFullscreen', 1, 1), - ( @domainID, '{ts escape="sql"}My Cases{/ts}', 'civicrm/dashlet/myCases&reset=1&snippet=5', 'access my cases and activities', NULL , 0, 0, 1, 2, 'civicrm/dashlet/myCases&reset=1&snippet=5&context=dashletFullscreen', 1, 1), - ( @domainID, '{ts escape="sql"}All Cases{/ts}', 'civicrm/dashlet/allCases&reset=1&snippet=5', 'access all cases and activities', NULL , 0, 0, 1, 3, 'civicrm/dashlet/allCases&reset=1&snippet=5&context=dashletFullscreen', 1, 1), - ( @domainID, '{ts escape="sql"}Case Dashboard Dashlet{/ts}', 'civicrm/dashlet/casedashboard&reset=1&snippet=5', 'access CiviCase', NULL , 0, 0, 1, 4, 'civicrm/dashlet/casedashboard&reset=1&snippet=5&context=dashletFullscreen', 1, 1); + ( @domainID, 'blog', '{ts escape="sql"}CiviCRM News{/ts}', 'civicrm/dashlet/blog&reset=1&snippet=5', 'access CiviCRM', NULL, 0, 0, 1, 0, 'civicrm/dashlet/blog&reset=1&snippet=5&context=dashletFullscreen', 1, 1), + ( @domainID, 'activity', '{ts escape="sql"}Activities{/ts}', 'civicrm/dashlet/activity&reset=1&snippet=5', 'access CiviCRM', NULL, 0, 0, 1, 1, 'civicrm/dashlet/activity&reset=1&snippet=5&context=dashletFullscreen', 1, 1), + ( @domainID, 'myCases', '{ts escape="sql"}My Cases{/ts}', 'civicrm/dashlet/myCases&reset=1&snippet=5', 'access my cases and activities', NULL , 0, 0, 1, 2, 'civicrm/dashlet/myCases&reset=1&snippet=5&context=dashletFullscreen', 1, 1), + ( @domainID, 'allCases', '{ts escape="sql"}All Cases{/ts}', 'civicrm/dashlet/allCases&reset=1&snippet=5', 'access all cases and activities', NULL , 0, 0, 1, 3, 'civicrm/dashlet/allCases&reset=1&snippet=5&context=dashletFullscreen', 1, 1), + ( @domainID, 'casedashboard', '{ts escape="sql"}Case Dashboard Dashlet{/ts}', 'civicrm/dashlet/casedashboard&reset=1&snippet=5', 'access CiviCase', NULL , 0, 0, 1, 4, 'civicrm/dashlet/casedashboard&reset=1&snippet=5&context=dashletFullscreen', 1, 1); -- event badge INSERT INTO civicrm_print_label (title, name, description, label_format_name, label_type_id, is_default, is_reserved, is_active, data) diff --git a/xml/templates/civicrm_sample.tpl b/xml/templates/civicrm_sample.tpl index 6fad51cccc4c952b6d80800ddc09a06a00fd7fe6..3179303092d377570c4c2f384e72dcbb0ea449cf 100644 --- a/xml/templates/civicrm_sample.tpl +++ b/xml/templates/civicrm_sample.tpl @@ -135,12 +135,12 @@ INSERT INTO `civicrm_contact_type` -- Add sample dashlets INSERT INTO `civicrm_dashboard` - ( `domain_id`, `label`, `url`, `permission`, `permission_operator`, `column_no`, `is_minimized`, `is_active`, `weight`, `is_fullscreen`, `fullscreen_url`) + ( `domain_id`, `name`, `label`, `url`, `permission`, `permission_operator`, `column_no`, `is_minimized`, `is_active`, `weight`, `is_fullscreen`, `fullscreen_url`) VALUES - ( @domain_id, '{ts escape="sql"}Donor Summary{/ts}' , 'civicrm/report/instance/6&reset=1§ion=1&snippet=5&charts=barChart', 'access CiviContribute', 'AND', 0, 0,'1', 4, '1', 'civicrm/report/instance/6&reset=1§ion=1&snippet=5&charts=barChart&context=dashletFullscreen'), - ( @domain_id, '{ts escape="sql"}Top Donors{/ts}' , 'civicrm/report/instance/13&reset=1§ion=2&snippet=5', 'access CiviContribute', 'AND', 0, 0,'1', 5, '1', 'civicrm/report/instance/13&reset=1§ion=2&snippet=5&context=dashletFullscreen'), - ( @domain_id, '{ts escape="sql"}Event Income Summary{/ts}', 'civicrm/report/instance/25&reset=1§ion=1&snippet=5&charts=pieChart', 'access CiviEvent' , 'AND', 0, 0,'1', 6, '1', 'civicrm/report/instance/25&reset=1§ion=1&snippet=5&charts=pieChart&context=dashletFullscreen'), - ( @domain_id, '{ts escape="sql"}Membership Summary{/ts}' , 'civicrm/report/instance/20&reset=1§ion=2&snippet=5', 'access CiviMember' , 'AND', 0, 0,'1', 7, '1', 'civicrm/report/instance/20&reset=1§ion=2&snippet=5&context=dashletFullscreen'); + ( @domain_id, 'report/6', '{ts escape="sql"}Donor Summary{/ts}' , 'civicrm/report/instance/6&reset=1§ion=1&snippet=5&charts=barChart', 'access CiviContribute', 'AND', 0, 0,'1', 4, '1', 'civicrm/report/instance/6&reset=1§ion=1&snippet=5&charts=barChart&context=dashletFullscreen'), + ( @domain_id, 'report/13', '{ts escape="sql"}Top Donors{/ts}' , 'civicrm/report/instance/13&reset=1§ion=2&snippet=5', 'access CiviContribute', 'AND', 0, 0,'1', 5, '1', 'civicrm/report/instance/13&reset=1§ion=2&snippet=5&context=dashletFullscreen'), + ( @domain_id, 'report/25', '{ts escape="sql"}Event Income Summary{/ts}', 'civicrm/report/instance/25&reset=1§ion=1&snippet=5&charts=pieChart', 'access CiviEvent' , 'AND', 0, 0,'1', 6, '1', 'civicrm/report/instance/25&reset=1§ion=1&snippet=5&charts=pieChart&context=dashletFullscreen'), + ( @domain_id, 'report/20', '{ts escape="sql"}Membership Summary{/ts}' , 'civicrm/report/instance/20&reset=1§ion=2&snippet=5', 'access CiviMember' , 'AND', 0, 0,'1', 7, '1', 'civicrm/report/instance/20&reset=1§ion=2&snippet=5&context=dashletFullscreen'); -- INSERT sample data for membership