SugarCRM開發入門


入門(探討請加微信:JiangHuKeyKe)

概述

Sugar最初是基於LAMP(Linux、Apache、MySQL和PHP)運行的。1.0版本以來,Sugar開發團隊增加支持多種操作系統(包括Windows、Unix和Mac OSX)上運行Sugar,作爲當今最先進的基於web的CRM平臺,Sugar已經迅速成爲全球企業的商業應用標準。有關支持的軟件版本和推薦的更多詳細信息,請參閱受支持的平臺頁面。

背景

Sugar有5個可用的版本:社區版、公司版、專業版、企業版,超級版。所有五個版本是由同一個開發團隊使用相同的架構代碼開發的,不同之處在於擴展功能的多少。

從2004年開始SugarCRM開放源碼項目,SugarCRM開發團隊設計了應用程序源代碼,供開發人員檢查和修改。Sugar的應用程序框架內置了一個非常複雜的擴展模型允許開發者進行重大的定製應用程序以upgrade-safe和模塊化的方式。很容易修改一個核心的文件;你應該檢查upgrade-safe讓你改變的一種方式。教會開發人員如何使upgrade-safe定製這個是開發者指南的關鍵目標之一。

應用程序架構

Sugar的應用代碼是基於一個模塊化的框架與安全的入口點的應用程序(例如index.php or soap.php)。所有模塊、核心或自定義的必須位於 <sugar root>/modules/文件夾。模塊表示業務實體或對象(如聯繫人),對象具有字段或屬性存儲在數據庫中,以及用戶創建/修改界面的記錄。模塊包含數據架構、用戶界面和應用程序功能的定義。

Sugar的根目錄結構如下所示:


目錄結構

Sugar應用程序中目錄結構包括以下根目錄:

  • cache : 寫入文件系統的各種緩存文件才減輕數據訪問壓力,以及存儲來自元數據創建的用戶界面模板。
  • custom : 用戶二次開發的文件應該放這個文件夾,可以避免Sugar升級造成的損害。
  • data : 關鍵文件夾,主要是SugarBean基類。
  • examples : Sugar的擴展的示例。
  • include : Sugar的大部份函數庫位於這個目錄,其中使用得最多的函數庫是utils.php文件。
  • jssource : 非壓縮JS文件。
  • log4php : 這個目錄已過時,現以LoggerManager替代。
  • metadata : 業務對象之間的所有多對多數據關係的關係元數據。
  • ModuleInstall : 使用代碼來加載Sugar模塊。
  • modules : 包含系統中的所有模塊。通過模塊加載器安裝的自定義模塊也存在。
  • portal : 用戶使用教程代碼 v1
  • service : Web Services code for SOAP and REST v2 - v4_1
  • soap : Web Services code for SOAP v1; this has been deprecated.
  • themes : 用於顯示各種主題的文件。
  • upload : 文件上傳目錄,注意:附件或文件放在這個目錄裏(參數配置(config.php)文件的upload_dir參數)
  • XTemplate : 舊的模板庫,已被Smarty替代,但有些代碼還可以使用它。
  • Zend : Classes used in the framework

關鍵概念

這些包含Sugar平臺的主要文件、類和應用程序的概念。

應用程序概念

  • Controller(控制器) : 對於每個傳入的頁面請求都必須通過此模塊。
  • Views(視圖) : 由控制器管理的用戶界面,默認視圖包括詳細視圖、編輯視圖和列表視圖。
  • Display strings(字符串顯示) : Sugar是完全國際化的,每個語言包都有自己的字符串顯示,這是語言本地化的基礎。在Sugar應用程序中有兩種類型的字符串顯示:應用程序字符串和模塊字符串。
    • 應用程序的用戶界面標籤的字符串顯示包含在通過全局應用程序變量中。
      • $GLOBALS['app_strings']
        • Array - 包含標籤值
      • $GLOBALS['app_list_strings']
        • Array - 包含系統範圍的下拉列表值。
    • 每種語言都有自己的應用字符串變量。
      • $GLOBALS['mod_strings']
        • Array - 包含特定於當前或焦點模塊的字符串。
  • Dropdown lists(下拉列表) 下拉列表表示爲name => value的鍵值對存儲在數據庫中,下拉列表可以通過Sugar工作室的可視界面進行編輯和創建。可以使用get_select_options_with_id()函數來獲取一個下拉列表,使用translate()函數表現下拉列顯示的字符串。

文件

  • SugarBean.php : 此文件位於<sugar root>/data目錄,SugarBean基類包含所用業務實體或模塊對象。任何讀寫或顯示數據的模塊都應繼承這個類。SugarBean執行大量的數據交互、關係處理等等。
  • modules.php : modules.php文件包含幾個有效可用的變量。

變量

  • $dictionary : $dictionary數組包含了所有模塊字段變量(vardefs)以及數據庫中所有表的元數據的關係。這個數組是動態生成的基於vardefs.php定義。

入口點

主要的用戶界面入口點是通過位於根目錄的index.php文件。主要參數是:

  • module : 要訪問的模塊
  • action : 模塊內的動作
  • record : 記錄ID

以下是一個Sugar調用的示例URL:

http://{sugar_url}/index.php?module=Contacts&action=DetailView&record=d545d1dd-0cb2-d614-3430-45df72473cfb

此URL調用聯繫人模塊內的詳細視圖動作,以顯示由記錄請求值記錄的記錄。

其他常用的參數 return_module , return_action, return_id,這組請求參數是用來當用戶取消操作創建或編輯記錄。

模塊架構

所有模塊,開箱即用(OOTB)或自定義,位於<sugar root>/modules/文件夾。創建模塊來表示Sugar中的對象(例如聯繫人),將對象的數據存儲在數據庫中,並提供一個界面來創建、編輯和刪除對象記錄。

"應用程序架構架" 部分先前提到了模塊中詳細視圖操作的典型調用示例。模塊有五個主要操作:

  • List View(列表視圖) : 此控制器操作可用於模塊的搜索窗體和搜索結果。用戶可以執行諸如刪除、導出、更新多個記錄 (批量更新) 以及插入特定記錄來查看和編輯詳細信息的操作。當用戶單擊頁面頂部的某個模塊選項卡時, 默認情況下可以看到此視圖。每個模塊中的文件描述列表和搜索視圖的內容。
  • Detail View(詳細視圖) : 詳細信息視圖顯示特定記錄的只讀視圖。通常, 這是通過列表視圖的記錄進入的。"詳細信息" 視圖顯示自身和相關項 (子面板) 的詳細信息。 子面板)是與父對象相關的項的微型列表視圖。例如, 分配給項目的任務或商業機會的聯繫人將出現在 "項目" 或 "商業機會明細" 視圖中的子面板中。 ./<module>/metadata/detailviewdefs.php 定義了模塊的詳細視圖佈局。./<module>/metadata/subpaneldefs.php 定義了在模塊的詳細視圖頁面中顯示的子面板。
  • Edit View(編輯視圖) : 當用戶創建新記錄或編輯現有數據的詳細信息時, 將訪問 "編輯視圖" 頁。也可以從列表視圖直接訪問 "編輯" 視圖。<module>/metadata/editviewdefs.php 定義了一個模塊的編輯視圖頁面佈局。
  • Save(保存) : 當用戶單擊記錄的 "編輯" 視圖中的 "保存" 時, 將處理此控制器操作。
  • Delete(刪除) : 當用戶在一個記錄的明細視圖中單擊 "刪除" 或在子面板中列出的記錄的詳細視圖中單擊 "刪除", 將處理此操作。

以下是UI框架驅動的。此框架依賴於所請求模塊中的元數據文件。

  • ./<module>/metadata/listviewdefs.php 描述列表視圖的佈局。
  • ./<module>/metadata/searchdefs.php 描述列表視圖上方的搜索表單選項卡。
  • ./<module>/metadata/editviewdefs.php 描述編輯視圖的佈局。
  • ./<module>/metadata/detailviewdefs.php 描述明細視圖的佈局。

除上述操作文件外, 以下文件還位於 ./<module>/文件夾中:

  • forms.php : 此文件包含兩個函數, 用於在編輯/保存期間呈現用於驗證的特定 javascript 或其他操作。默認情況下, 你可以把這些空, 讓他們return '';
  • Menu.php : 此文件負責渲染 "快捷方式" 菜單, 它被更名爲 "操作" 菜單, 如Sugar 6.0。在社區版中, "動作" 菜單顯示在模塊選項卡和最近查看的欄的下方。在Sugar的其它版中, "操作" 菜單在每個模塊選項卡上顯示。默認情況下, 通常添加一個鏈接以創建新記錄, 以及指向要搜索的列表視圖的鏈接。
  • Popup.php : 此文件充當位於 utils 文件夾下的彈出窗口類的封裝。當模塊要從相關模塊中獲取一個彈出記錄列表時, 就會調用它。彈出類使用 Popup_picker.html 和./<module>/metadata/popupdefs.php 文件渲染彈出窗口。
  • Popup_picker.html : 用於顯示模塊的彈出窗口的彈出式類。
  • vardefs.php : vardefs. php 元數據文件定義了Sugar對象的 db 和 non-db 字段以及對象之間的關係。
  • field_arrays.php : 這個文件已被Sugar5.1以後版本的vardefs元數據替代,它已經被逐步淘汰。

下圖顯示了模塊文件夾中的子文件夾:


以下子文件夾位於./<module>/ 文件夾:

  • Dashlets(面板) : 這些是在Sugar首頁和儀表板標籤上顯示的面板。Sugar面板顯示任何數據 (包括外部連接器的數據), 以及模塊的列表視圖和圖表數據。作爲一個自定義模塊的開發人員, 您可以爲您的新模塊創建一個Sugar面板。對於您創建的每個Sugar面板, 您將在./<module>/Dashlets/文件夾中放置必要的文件。
  • language(語言) : 此文件夾保存模塊的字符串文件。默認情況下, 您將有一個包含模塊使用的所有字符串的 en_us.lang.php 文件。這些字符串由 mod_strings 變量表示, 在全局 mod_string 調用後隨時訪問。"幫助" 子系統使用位於此文件夾中的 html 文件。Sugar提供了通過新語言包的管理面板進行多語言支持和動態加載的功能。
  • metadata(元數據) : 在這個文件夾中添加了特定於模塊的元數據文件, 增加了更多的元數據和擴展到Sugar平臺。此目錄中的大多數文件和文件夾都可以被一個同名的文件重寫 ./custom/<module>/metadata/目錄。此目錄中的文件和文件夾包括:
    • additionaldetails.php : 列表視圖中顯示的彈出窗口的內容
    • detailviewdefs.php : 明細視圖的字段佈局
    • editviewdefs.php : 編輯視圖的字段佈局
    • listviewdefs.php : 在列表視圖中顯示的表頭佈局
    • popupdefs.php : 模塊的彈出式視圖的搜索字段和列表列
    • quickcreatedefs.php : 在應用程序的多個區域中使用的快速創建表單的佈局
    • searchdefs.php : 列表視圖中基本搜索和高級搜索表單的字段佈局。
    • SearchFields.php : 模塊中唯一搜索字段定義的映射
    • studio.php : 工作室的映射, 用於標識重寫模塊的標準元數據文件的文件
    • subpaneldefs.php : 在模塊的詳細視圖中顯示子面板的佈局
    • subpanels : 這是一個文件夾,放置模塊定義的顯示在其他模塊詳細視圖的子面板(一對多或多對多)存在一個適當的關係
  • tpls : 用於各種模塊頁眉、頁腳等的 smarty 模板文件
  • views : 此文件夾包含可重寫默認模型-視圖-控制器 (mvc) 框架視圖文件的文件。視圖文件可以在 smarty 模板或輸出 html 上執行多個操作, 允許開發人員修改和擴展默認 ui 顯示類並完全控制用戶界面。

用戶界面框架

sugarcrm 使用模型-視圖-控制器 (mvc) 模式的實現作爲所有應用程序交互的基礎。與 mvc 框架緊密合作是一個元數據驅動的 ui 框架, 其中用戶界面的高級規範在元數據結構中描述。

擴展框架

Sugar的擴展框架使您能夠實現現有模塊的自定義或創建新的模塊。您可以以通過安全的升級方式各種擴展框架功能來擴展Sugar的大部分功能。Sugar的"系統管理"提供模塊生成器工具和工作室工具使您能夠進行如下所述的自定義。然後, 您可以通過添加安全升級自定義代碼來進一步擴展系統。可擴展的區域爲:

  • Modules : 創建新的模塊並將它們添加到Sugar中
  • Vardefs : 自定義字段添加到自定義模塊添加到現有模塊中
  • Relationships : 創建自定義模塊與模塊之間的關係
  • Subpanels : 爲現有模塊創建/添加新的子面板定義
  • Strings : 重寫或添加到模塊和應用程序的字符串
  • Menus : 重寫或添加到操作菜單
  • Layout Defs : 指定顯示的子面板和它們的顯示順序。創建自定義模塊的佈局定義, 並將其作爲子面板添加到現有模塊的佈局定義中。

Sugar面板

Sugar面板是一個框架, 提供Sugar面板容器將包括在Sugar UI中。Sugar面板容器對象顯示和與Sugar面板數據交互, 與外部來源如RSS, 以及web 服務如谷歌地圖。最初發布在Sugar 4.5版本中, Sugar面板是一個強有力的新的展示方式, 結合高度功能 mash-ups 在一個有吸引力和容易定製的 AJAX-based ui 框架。Sugar面板位於Sugar首頁, 允許通過簡單的拖放工具定製。Sugar面板框架允許開發者輕鬆地創建新的Sugar面板, 可以通過模塊裝載器安裝。

網絡服務

Sugar爲開發者提供了一個 web 服務 api 接口, 用於構建與Sugar的集成的讀寫數據。Sugar通過 soap 和 rest 協議的 NuSOAP php 實現提供了 web 服務 api。soap (簡單對象訪問協議) 用於通過 http 協議中繼消息來進行遠程過程調用。SugarSoap api, 內置在 NuSOAP php 庫的頂端。rest (代表狀態傳輸) 用於通過發送和接收 json/序列化格式的消息來通過 http 協議進行方法調用。框架支持爲 rest 添加多種格式。例如, 可以添加 xml 格式以發送和接收數據。

連接器

雲連接器框架使開發者能夠將外部 web 服務和小部件的數據集成到它們的Sugar安裝中。來自現有模塊 (如客戶、聯繫人和潛在顧客) 的數據可以充當檢索外部數據的輸入。

Sugar內的連接器類創建了一個集成第三方系統在Sugar內的框架。目前有三種不同的基礎集成。文檔允許Sugar將文檔上載到第三方系統, 從該系統下載文檔, 並在以後允許Sugar安裝這些文檔 (如果第三方系統支持) 共享。會議有助於Sugar與外部會議系統或其他會議系統集成, 從而創建和編輯會議, 邀請與會者參加會議, 並在電子郵件邀請中包括外部會議信息。提要集成類型允許Sugar從第三方來源獲取新聞複製數據, 並將其顯示在用戶主頁上的 "我的活動" 流中。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章