SugarCRM 문서 원본 보기
←
SugarCRM
둘러보기로 가기
검색하러 가기
문서 편집 권한이 없습니다. 다음 이유를 확인해주세요:
요청한 명령은 다음 권한을 가진 사용자에게 제한됩니다:
사용자
.
이 문서는 편집하거나 다른 명령을 할 수 없도록 보호되어 있습니다.
문서의 원본을 보거나 복사할 수 있습니다.
오픈소스로 제공되는, On-Premise/On-Demand/Appliance 방식의 CRM인 sugarCRM (Sugar Community Edition)을 소개한다. *홈페이지 :*[http://www.sugarcrm.com/ http://www.sugarcrm.com/] :*[http://www.codeplex.com/sugarcrm/ http://www.codeplex.com/sugarcrm/] :*[http://www.sugarforge.org/content/open-source/ http://www.sugarforge.org/content/open-source/], [http://www.sugaropensource.org/ http://www.sugaropensource.org/], [http://sourceforge.net/projects/sugarcrm/ http://sourceforge.net/projects/sugarcrm/] *다운로드 : [http://sourceforge.net/project/showfiles.php?group_id=107819 http://sourceforge.net/project/showfiles.php?group_id=107819] *라이센스 : AGPL v3 + 상용 라이센스 *플랫폼 : Windows, Solaris, Linux, Mac OS == Document == *기술지원 :*Forum : [http://forums.sugarcrm.com/ http://forums.sugarcrm.com/] :*Blog : [http://developers.sugarcrm.com/wordpress/ http://developers.sugarcrm.com/wordpress/] *[http://apidocs.sugarcrm.com/ API Document] : [http://www.phpdoc.org/ phpDocumentor 2]를 사용하여 추출한 API Document :*Ultimate : [http://apidocs.sugarcrm.com/api/6.5.4/ult API], [http://apidocs.sugarcrm.com/schema/6.5.0/ult Schema] :*Enterprise : [http://apidocs.sugarcrm.com/api/6.5.4/ent API], [http://apidocs.sugarcrm.com/schema/6.5.0/ent Schema] :*Corporate : [http://apidocs.sugarcrm.com/api/6.5.4/corp API], [http://apidocs.sugarcrm.com/schema/6.5.0/corp Schema] :*Professional : [http://apidocs.sugarcrm.com/api/6.5.4/pro API], [http://apidocs.sugarcrm.com/schema/6.5.0/pro Schema] :*Community : [http://apidocs.sugarcrm.com/api/6.5.4/ce API], [http://apidocs.sugarcrm.com/schema/6.5.0/ce Schema] *[http://developers.sugarcrm.com/docs/ENT/6.4/n/Application_Guides/-docs-Application_Guides-Sugar_Enterprise_Application_Guide_6.4.0-toc.html http://developers.sugarcrm.com/docs/ENT/6.4/n/Application_Guides/-docs-Application_Guides-Sugar_Enterprise_Application_Guide_6.4.0-toc.html] *[http://support.sugarcrm.com/02_Documentation/01_Sugar_Editions/02_Sugar_Enterprise/Sugar_Enterprise_6.5/Sugar_Enterprise_Administration_Guide_6.5.0 Sugar Enterprise 6.5.0 Administration Guide - SugarCRM Support Site] *[http://support.sugarcrm.com/02_Documentation/04_Sugar_Developer/Sugar_Developer_Guide_6.5 Sugar Developer Guide 6.5 - SugarCRM Support Site] *[http://support.sugarcrm.com/04_Find_Answers/03_Developers Developers - SugarCRM Support Site] *[http://support.sugarcrm.com/05_Resources/03_Supported_Platforms/Sugar_6.5.x_Supported_Platforms 지원 플랫폼] *[http://status.sugarcrm.com/ On-Demand Status] == 관리자 가이드 == === 로그 설정 === *로그 파일 :*$SUGAR_HOME/include/SugarLogger/LoggerManager.php :*$SUGAR_HOME/include/SugarLogger/SugarLogger.php *$SUGAR_HOME/config.php에서 로그 설정 :log_dir : 로그가 저장되는 폴더 :log_file : 로그 파일명, 초기값은 "sugarcrm.log" :log_memory_usage : :logger => level : 로그 레벨 (debug, info, error, fatal, security, off) :logger => file ::ext : 로그 파일 확장자, 초기값은 ".log" ::name : 로그 파일명, 초기값은 "sugarcrm" ::dateFormat : 날자 포맷 ::maxSize : 로그 파일 최대 크기 ::maxLogs : 로그 파일 최대 갯수 ::suffix : 로그 파일 뒤에 붙는 문자열, 초기값은 "%m_%Y" *프로그램에서 로그 남기기 $GLOBALS['log']->debug('로그 메시지'); $GLOBALS['log']->info('로그 메시지'); === License 표시 변경 === *vi include/MVC/View/SugarView.php :*666 라인에 있는 $copyright 를 변경 한다. === 한글팩 제작 === SugarCRM의 한글팩을 만들기 위해 en_us 언어로 부터 ko_kr 파일을 추출하여 한글 언어팩을 작성 한다. *한글팩 작성을 위한 폴더 생성 mkdir /tmp/sugar #--- 다운로드 받은 SugarCE-6.1.1.zip의 압축을 여기에 푼다. mkdir /tmp/sugar_ko_kr *ant를 사용하여 언어로 부터 한글 파일을 복사하기 위한 build 파일을 만든다. :*vi /tmp/sugar_ko_kr/build.xml <?xml version="1.0" encoding="UTF-8"?> <project name="sugar" default="init" basedir="."> <property name="dirSugar" value="/tmp/sugar" /> <property name="dirSugarKoKr" value="/tmp/sugar_ko_kr" /> <!-- SugarCRM 소스로부터 Language Pack과 관련된 파일만 추출 한다. --> <target name="init"> <copy todir="${dirSugarKoKr}"> <fileset dir="${dirSugar}" includes="**/en_us.*.html, **/en_us.lang.php, **/*.en_us.lang.php, **/*.en_us.php, **/en_us.*.tpl, **/*.lang-en.php, **/en.js, **/en_dlg.js" excludes="cache/**/*" /> </copy> <move todir="${dirSugarKoKr}"> <fileset dir="${dirSugarKoKr}" includes="**/en_us.*.html, **/en_us.lang.php, **/*.en_us.lang.php, **/*.en_us.php, **/en_us.*.tpl, **/*.lang-en.php, **/en.js, **/en_dlg.js" /> <filtermapper> <replacestring from="en_us" to="ko_kr" /> <replacestring from="en_us.lang.php" to="ko_kr.lang.php" /> <replacestring from="en_us.php" to="ko_kr.php" /> <replacestring from="lang-en.php" to="lang-ko.php" /> <replacestring from="en.js" to="ko.js" /> <replacestring from="en_dlg.js" to="ko_dlg.js" /> </filtermapper> </move> </target> </project> *영어 파일을 복사하여 한글 파일로 이름만 변경 한다. (위에서 만든 build.xml 파일 사용) cd /tmp/sugar_ko_kr ant init *vi /tmp/sugar_ko_kr/manifest.php <?php $manifest = array( 'acceptable_sugar_versions' => array ( 'exact_matches' => array(), 'regex_matches' => array ( 0 => "6\.6\.1.*" ), ), 'acceptable_sugar_flavors' => array ( 0 => 'CE', 1 => 'PRO', 2 => 'ENT', ), 'name' => 'Korean Language Pack', 'description' => 'Korean Language Pack', 'author' => 'pnuskgh', 'published_date' => '2011/01/23', 'version' => '0.1', 'type' => 'langpack', 'icon' => '','' 'is_uninstallable' => true, ); $installdefs = array( 'id'=> 'langpack_ko_kr', 'copy' => array( array('from'=> '<basepath>', 'to'=> '.', ), ), ); ?> *SugarCRM 한글팩(langpack_ko_kr.zip) 작성 :*/tmp/sugar_ko_kr/ 폴더에 있는 파일을 열어 열심히 한글로 번역 한다. :*/tmp/sugar_ko_kr/ 폴더의 내용을 묶어 langpack_ko_kr.zip 파일을 작성 한다. === 한글 설치 프로그램 제작 === *vi /install.php 파일을 다음과 같이 수정 한다. $supportedLanguages = array( 'ko_KR' => 'Korea - 한국어', //--- 이 라인을 추가 한다. 'en_us' => 'English (US)', $default_lang = 'ko_KR'; //--- 디폴트로 ko_KR을 지정 한다. */install/language/ko_KR.lang.php 파일을 작성 한다. */install/demoData.ko_KR.php 데모 데이터 파일을 작성 한다. === 테마 구조 === === Dashlet === *참고 문헌 :*[http://www.sugarcrm.com/wiki/index.php?title=Dashlets SugarCRM - Dashlets] == SOAP/REST == *[http://axis.apache.org/axis/ AXIS 1.4] wsdl2java.bat -o . -p com.sugar [http://cloud.smartprocess.co.kr/testEnt/service/v4/soap.php?wsdl http://cloud.smartprocess.co.kr/testEnt/service/v4/soap.php?wsdl] *SugarsoapLocatior.java // private java.lang.String sugarsoapPort_address = "[http://cloud.smartprocess.co.kr/testEnt/service/v4/soap.php http://cloud.smartprocess.co.kr/testEnt/service/v4/soap.php]"; private java.lang.String sugarsoapPort_address = Config.getString("sugar.serverurl", "[http://cloud.smartprocess.co.kr/testEnt/ http://cloud.smartprocess.co.kr/testEnt/]") + "service/v4/soap.php"; *SugarsoapBuindingStub.java public static String SugarServerurl = Config.getString("sugar.serverurl", "[http://cloud.smartprocess.co.kr/testEnt/ http://cloud.smartprocess.co.kr/testEnt/]") + "service/v4/soap.php"; _call.setSOAPActionURI(SugarsoapBindingStub.SugarServerurl + "/login"); *SugarsoapBuindingStub.java 함수 public com.sugar.Entry_value login(com.sugar.User_auth user_auth, java.lang.String application_name, com.sugar.Name_value[] name_value_list) public void logout(java.lang.String session) public com.sugar.Get_entry_result_version2 get_entry(java.lang.String session, java.lang.String module_name, java.lang.String id, java.lang.String[] select_fields, com.sugar.Link_name_to_fields_array[] link_name_to_fields_array, boolean track_view) public com.sugar.Get_entry_result_version2 get_entries(java.lang.String session, java.lang.String module_name, java.lang.String[] ids, java.lang.String[] select_fields, com.sugar.Link_name_to_fields_array[] link_name_to_fields_array, boolean track_view) public com.sugar.Get_entry_list_result_version2 get_entry_list(java.lang.String session, java.lang.String module_name, java.lang.String query, java.lang.String order_by, int offset, java.lang.String[] select_fields, com.sugar.Link_name_to_fields_array[] link_name_to_fields_array, int max_results, int deleted, boolean favorites) public com.sugar.New_set_relationship_list_result set_relationship(java.lang.String session, java.lang.String module_name, java.lang.String module_id, java.lang.String link_field_name, java.lang.String[] related_ids, com.sugar.Name_value[] name_value_list, int delete) public com.sugar.New_set_relationship_list_result set_relationships(java.lang.String session, java.lang.String[] module_names, java.lang.String[] module_ids, java.lang.String[] link_field_names, java.lang.String[][] related_ids, com.sugar.Name_value[][] name_value_lists, int[] delete_array) public com.sugar.Get_entry_result_version2 get_relationships(java.lang.String session, java.lang.String module_name, java.lang.String module_id, java.lang.String link_field_name, java.lang.String related_module_query, java.lang.String[] related_fields, com.sugar.Link_name_to_fields_array[] related_module_link_name_to_fields_array, int deleted, java.lang.String order_by) public com.sugar.New_set_entry_result set_entry(java.lang.String session, java.lang.String module_name, com.sugar.Name_value[] name_value_list) public com.sugar.New_set_entries_result set_entries(java.lang.String session, java.lang.String module_name, com.sugar.Name_value[][] name_value_lists) public com.sugar.Get_server_info_result get_server_info() public java.lang.String get_user_id(java.lang.String session) public com.sugar.New_module_fields get_module_fields(java.lang.String session, java.lang.String module_name, java.lang.String[] fields) public int seamless_login(java.lang.String session) public com.sugar.New_set_entry_result set_note_attachment(java.lang.String session, com.sugar.New_note_attachment note) public com.sugar.New_return_note_attachment get_note_attachment(java.lang.String session, java.lang.String id) public com.sugar.New_set_entry_result set_document_revision(java.lang.String session, com.sugar.Document_revision note) public com.sugar.New_return_document_revision get_document_revision(java.lang.String session, java.lang.String i) public com.sugar.Return_search_result search_by_module(java.lang.String session, java.lang.String search_string, java.lang.String[] modules, int offset, int max_results, java.lang.String assigned_user_id, java.lang.String[] select_fields, boolean unified_search_only, boolean favorites) public com.sugar.Module_list get_available_modules(java.lang.String session, java.lang.String filter) public java.lang.String get_user_team_id(java.lang.String session) public void set_campaign_merge(java.lang.String session, java.lang.String[] targets, java.lang.String campaign_id) public com.sugar.Get_entries_count_result get_entries_count(java.lang.String session, java.lang.String module_name, java.lang.String query, int deleted) public com.sugar.Get_entry_result_for_reports get_report_entries(java.lang.String session, java.lang.String[] ids, java.lang.String[] select_fields) public java.lang.String[] get_module_fields_md5(java.lang.String session, java.lang.String[] module_names) public com.sugar.Last_viewed_entry[] get_last_viewed(java.lang.String session, java.lang.String[] module_names) public com.sugar.Upcoming_activity_entry[] get_upcoming_activities(java.lang.String session) == SugarCRM 아키텍처 == === 사용 라이브러리 === {| cellspacing="1" cellpadding="1" border="1" width="100%" |- | width="30%" bgcolor="cyan" align="center" valign="middle" | 라이브러리 | width="20%" bgcolor="cyan" align="center" valign="middle" | 라이선스 | width="50%" bgcolor="cyan" align="center" valign="middle" | 상세 설명 |- | Sugar Community Edition | align="center" | GNU GPL 3.0 | 오픈소스 CRM |- | [[Tcpdf|tcpdf]] | align="center" | GNU LGPL 2.1 | PDF 제작 |- | [[Phpmailer|phpmailer]] | align="center" | GNU LGPL 2.1 | 메일 발송 |- | [[PHP Compat|PHP_Compat]] | align="center" | PHP License 3.0 | |- | [[Nusoap|nusoap]] | align="center" | Free | Web Services Toolkit for PHP |- | [[HTTP WebDAV Server|HTTP_WebDAV_Server]] | align="center" | PHP License 3.0 | WebDAV 서버 |- | [[HTML Safe|HTML_Safe]] | align="center" | BSD style license | |- | [[Domit rss|domit_rss]] | align="center" | Free | DOM based RSS parser for PHP |- | [[Domit|domit]] | align="center" | Free | DOM parser for PHP |- | [[Crypt Blowfish|Crypt_Blowfish]] | align="center" | PHP License 3.0 | |- | [[TreeView|TreeView]] | align="center" | BSD License | Javascript, Tree 형태의 항목을 표시 |- | [[Yui|yui]] (Yahoo User Interface) | align="center" | BSD License | Javascript, UI 모듈 |- | [[Tiny mce|tiny_mce]] | align="center" | GNU LGPL 2.1 | Javascript, |- | [[Ext JS|Ext JS]] | align="center" | GNU LGPL 3.0 | Javascript, |- | [[Jscalendar|jscalendar]] | align="center" | GNU LGPL 3.0 | Javascript, 달력 |} === 프로그램 호출 구조 === *호출 URL: [http://localhost/sugar/index.php?module=Accounts&action=index http://localhost/sugar/index.php?module=Accounts&action=index] :*'''module''': /sugar/modules/Accounts/ 폴더에 있는 모듈이 사용됨 :*'''action'''::*/sugar/include/MVC/Controller/action_file_map.php 참조 ::*/sugar/include/MVC/Controller/action_view_map.php 참조 ::*아래 정리된 범례. action_명 (view_명) ::*index: ::*DetailView (detail): ::*EditView (edit): ::*MultiEditView (multiedit): ::*Popup (popup): ::*Vcard (vcard): ::*ImportVcard (importvcard): ::*ImportVcardSave (importvcardsave): ::*SugarPdf (sugarpdf): ::*SaveTimezone ::*InitialSync ::*Logout ::*RetrieveEmail ::*view 명: ajax, classic, config, detail, edit, html, importvcard, importvcardsave, json, list, multedit, noaccess, popup, serialized, sidequickcreate, sugarpdf, vcard, xml :*'''return_module''' :*'''return_action''' :*return_id: :*id: :*record: :*view: :*Delete: :*entire: :*mass: :*type: :*ie_assigned_user_id: :*configure: :*RTL: :*LTR: :*query_string: :*module_tab: :*parentTab: :*popup: :*lvso: :*query: :*displayColumns: :*orderBy: :*sortOrder: :*entryPoint: :*massupdate: :*usertheme: :*noThemeSave: :*usercolor: :*userfont: :*userthemegrouptabs: :*MSID: *호출 URL에 따른 처리 프로그램 :*/sugar/include/MVC/Controller/SugarController.php#process(); :*/sugar/include/MVC/View/SugarView.php#process(); ::*/sugar/modules/Accounts/views/view.view_명.php ::*/sugar/include/MVC/View/views/view.view_명.php */sugar/modules/Accounts/ 폴더 구조 :*views/: Default. /sugar/include/MVC/View/views/ :*tpls/: Default. /sugar/include/MVC/View/tpls/ :*metadata/: 메타데이터 :*Dashlets/: 대쉬렛 :*SugarFeeds/: 피드 :*language/: 언어 파일, ko_KR.lang.php === 디렉토리 구조 === === 프로세스 구조 === index.php를 분석하여 SugarCRM의 프로세스 흐름을 파악한다. *require_once('include/entryPoint.php') :*require_once('config.php') : 환경 설정 :*require_once('config_override.php') : 환경 설정 개인화 :*require_once 'include/SugarObjects/SugarConfig.php' : SugarCRM 환경 설정 :*require_once('include/utils.php') :*require_once('sugar_version.php'); :*require_once('include/database/PearDatabase.php'); :*require_once('include/database/DBManager.php'); :*require_once('include/database/DBManagerFactory.php'); :*require_once('include/dir_inc.php'); :*require_once('include/Localization/Localization.php'); :*require_once('include/javascript/jsAlerts.php'); :*require_once('include/TimeDate.php'); :*require_once('include/modules.php'); :*require_once('data/SugarBean.php'); :*require_once('include/utils/file_utils.php'); :*require_once('include/utils/mvc_utils.php'); :*require_once('include/SugarEmailAddress/SugarEmailAddress.php'); :*require_once('include/SugarLogger/LoggerManager.php'); :*require_once('modules/Trackers/BreadCrumbStack.php'); :*require_once('modules/Trackers/Tracker.php'); :*require_once('modules/Trackers/TrackerManager.php'); :*require_once('modules/ACL/ACLController.php'); :*require_once('modules/Administration/Administration.php'); :*require_once('modules/Administration/updater_utils.php'); :*require_once('modules/Users/User.php'); :*require_once('modules/Users/authentication/AuthenticationController.php'); :*require_once('include/utils/LogicHook.php'); :*require SUGAR_PATH . '/include/SugarObjects/SugarRegistry.php'; *require_once('include/MVC/SugarApplication.php') :*require_once('include/MVC/Controller/ControllerFactory.php') ::*require_once('include/MVC/Controller/SugarController.php') : 디폴터 Controller :::*require_once('include/MVC/View/SugarView.php'); :::*require_once('modules/Administration/updater_utils.php'); :::*$this->process(); :::*$this->processView(); ::::*$view->process(); ::*require_once('custom/modules/'.$module.'/controller.php') : 모듈별 사용자 정의 Controller ::*require_once('modules/'.$module.'/controller.php') : Module별 Controller ::*$controller = new SugarController() : 디폴터 Controller :*require_once('include/MVC/View/ViewFactory.php') ::*require_once('include/MVC/View/SugarView.php'); ::*'custom/modules/'.$module.'/views/view.'.$type.'.php : 사용자 정의 모듈별 View ::*modules/'.$module.'/views/view.'.$type.'.php' : Module별 View ::*custom/include/MVC/View/views/view.'.$type.'.php : 사용자 정의 디폴트 View ::*include/MVC/View/views/view.'.$type.'.php : 디폴트 View :*require_once('modules/Users/authentication/AuthenticationController.php') :*$app->execute() ::*Request parameter : module, action, usertheme, MSID, entryPoint, massupdate ::*$this->controller = ControllerFactory::getController($module); ::*$this->controller->checkEntryPointRequiresAuth($_REQUEST['entryPoint']) :::*$this->loadUser(); :::*$this->ACLFilter(); :::*$this->preProcess(); :::*$this->controller->preProcess(); ::*$this->loadLanguages(); ::*$this->checkDatabaseVersion(); ::*$this->loadDisplaySettings(); ::*$this->loadLicense(); ::*$this->loadGlobals(); ::*$this->setupResourceManagement($module); ::*$this->controller->execute(); ::*sugar_cleanup(); :*require_once('include/resource/ResourceManager.php'); :*require_once ('modules/Sync/file_config.php'); :*require_once('modules/Sync/SyncController.php'); :*require_once('themes/'.$GLOBALS['theme'].'/layout_utils.php'); === 화면 구조 === *include/MVC/View/SugarView.php :*$this->displayHeader(); ::*Theme : header.tpl _leftFormHiddenLastViewed.tpl _leftFormHiddenShortcuts.tpl <div id="header"> _companyLogo.tpl _colorFontPicker.tpl _globalLinks.tpl _welcome.tpl _headerSearch.tpl _headerModuleListGroupTabs.tpl _headerModuleList.tpl _headerLastViewed.tpl _headerShortcuts.tpl </div> <div id="main"> _leftFormHide.tpl :*$this->preDisplay(); :*$this->displayErrors(); :*$this->display(); ::*Module과 Action에 해당하는 template이 사용됨 :*$this->displaySubPanels(); ::*$subpanel->display(); :*$this->displayFooter(); ::*Theme : footer.tpl *Default Theme :*Sugar <- default === Shortcut Menu === *SugarCRM의 좌측 메뉴에 보여지는 Shortcut Menu (바로가기 메뉴)를 정리 한다. */modules/모듈명/Menu.php 에 권한에 따른 바로 가기 메뉴가 정의 되어 있다. == 동적 구조 == *Relate 변수 select name, type, ext2, ext3 from fields_meta_data where custom_module = 'cases' and type = 'relate'; select custom_module, name, type, len, required, ext1, ext2, ext3, ext4 from fields_meta_data where custom_module = 'Campaigns' order by name; *relationship desc relationships; == 문제 해결 == *Sugar 화면이 깨어지고 Ajax 관련 오류 창이 표시됨 CentOS에 설치된 PHP 라이브러리의 버전이 달라 문제가 발생 합니다. - jssource/Minifier.php 파일 수정 //--- 158 line, pnuskgh // $this->input = preg_replace('/\h/u', ' ', $this->input); $this->input = preg_replace('/[ \t]/u', ' ', $this->input); - Admin -> Repair -> Repair JS Files 실행 - cache/ 폴더의 파일을 모두 삭제 *Home 화면에서 Dashlet의 탭이 계속 실행중으로 표시됨 :*cache/xml/ 폴더를 apache:apache 권한으로 생성을 합니다. == Localization == === 한글팩 작성 === *Localization 범위 :*한글 번역, 이미지 등 한글화 :*어순 : 성 이름 :*날짜, 시간 :*다중 통화 (Currency) :*주소 *PHP 파일 번역 :*ko_KR.lang.php :*~Dashlet.ko_KR.lang.php :*demoData.ko_KR.php :*phpmailer.lang-ko.php *Template 파일 번역 :*LotusLiveSignup.ko_KR.tpl :*footer.tpl *JavaScript 파일 번역 :*ko.js, ko_dlg.js :*calendar.js, calendar-min.js *HTML 파일 번역 :*ko_KR.notify_template.html :*ko_KR.Portal.html *이미지 파일을 [[Gimp|gimp]]를 사용하여 새로 작성 *PDF 파일에서 한글이 깨어짐 :*[http://sourceforge.net/projects/tcpdf/files/ TCPDF]에서 hysmyeongjostdmedium.php 파일을 다운로드 :*include/tcpdf/fonts/ 폴더에 복사 :*"Admin -> Repair -> Quick Repair and Rebuild" 메뉴 실행 :*개인별 Profile에서 PDF Settings을 다음과 같이 설정 ::*Font for Header and Body : MyungJo Medium (Korean) ::*Font for Footer : MyungJo Medium (Korean) :*[http://www.xml-convert.com/en/convert-tff-font-to-afm-pfa-fpdf-tcpdf http://www.xml-convert.com/en/convert-tff-font-to-afm-pfa-fpdf-tcpdf] *vi include/Sugarpdf/sugarpdf_default.php :*helvetica를 MyungJo Medium (Korean)로 변경 합니다. (미확인 사항) 'PDF_FONT_NAME_MAIN'=>'helvetica', 'PDF_FONT_NAME_DATA'=>'helvetica', *TCPDF에 ttf 폰트 추가 (실패) :*[http://hangeul.naver.com/index.nhn 나눔글꼴]을 다운로드 합니다. :*[http://www.xml-convert.com/en/convert-tff-font-to-afm-pfa-fpdf-tcpdf http://www.xml-convert.com/en/convert-tff-font-to-afm-pfa-fpdf-tcpdf] 사이트에서 ttf2ufm.exe 파일을 다운로드 합니다. :*ttf2ufm.exe ~.ttf 명령을 사용하여 ~.ufm 파일을 생성 합니다. :*/include/tcpdf/fonts/utils/makefont.php 파일을 수정하여 nanumgothiccoding.php, nanumgothiccoding.z, nanumgothiccoding.ctg.z 파일을 생성 합니다. ::*php -q makefont.php NanumGothicCoding.ttf NanumGothicCoding.ufm ::*생성된 파일을 /include/tcpdf/fonts/ 폴더에 복사 합니다. === 주소 === *Address Localization :*include/SugarFields/Fields/Address/ko_KR.DetailView.tpl, ko_KR.EditView.tpl === 한글로 모듈(거래처) 목록 검색 === *AJAX 목록 화면에서 한글로 검색시 화면이 표시되지 않음 include/ListView/ListViewData.php 파일의 529 라인에서 $queryString = htmlentities($_REQUEST[$field_name]);을 아래와 같이 변경함 $queryString = htmlentities($_REQUEST[$field_name], null, "UTF-8"); === 메일 발송시 보낸 사람 이름 === *메일 발송시 보낸 사람 이름이 깨어짐 modules/Emails/Email.php 851 line From : $this->from_addr_name = $this->from_addr; To : $this->from_addr_name = "{$mail->FromName} <{$mail->From}>"; :*근본적으로 해결을 하려면 $mail->FromName 값이 MIME으로 인코딩 되었을 경우에만 decode를 하도록 수정할 것 == Tips == *[http://developers.sugarcrm.com/wordpress/2012/10/15/conditional-formatting-on-cases-list-view-and-dashlets/ Conditional Formatting on Cases List view and Dashlets, 2012.10.15] *[http://developers.sugarcrm.com/wordpress/2012/10/08/customizing-the-query-used-for-a-subpanel/ Customizing the query used for a subpanel, 2012.10.08] *Leveraging ACL access levels in your code :*[http://developers.sugarcrm.com/wordpress/2012/10/03/leveraging-acl-access-levels-in-your-code-part-1-admindeveloper-access/ Leveraging ACL access levels in your code: Part 1 – Admin/Developer access] :*[http://developers.sugarcrm.com/wordpress/2012/10/04/leveraging-acl-access-levels-in-your-code-part-2-record-level-acls-and-some-more-module-level-acls/ Leveraging ACL access levels in your code: Part 2 – Record Level ACLs and some more Module Level ACLs] :*[http://developers.sugarcrm.com/wordpress/2012/10/05/leveraging-acl-access-levels-in-your-code-part-3-field-level-acls/ Leveraging ACL access levels in your code: Part 3 – Field Level ACLs] == 참고 문헌 == *[[Sugar Customize|Sugar Customize]] *[http://cafe.naver.com/sugacrm 네이버 슈가 카페] *[http://dbminfo.tistory.com/ DBM, CRM 자료창고] *[https://www.youtube.com/user/DiscoverSugarCRM Sugar Youtube] *기타 오픈소스 CRM :*[http://civicrm.org/ CiviCRM] : PHP 기반 :*[http://www.opencrx.org/ openCRX] : Java 기반 :*[http://www.opentaps.org/ Opentaps] : Java 기반, 도요타에서 사용중 == 지원 업체 == {{지원업체}} [[Category:오픈소스|Category:오픈소스]]<br/>[[Category:CRM|Category:CRM]]<br/>[[Category:한글화|Category:한글화]]<br/>[[Category:Sugar|Category:Sugar]]<br/>[[Category:WebSite|Category:WebSite]]
이 문서에서 사용한 틀:
틀:지원업체
(
원본 보기
)
SugarCRM
문서로 돌아갑니다.
둘러보기 메뉴
개인 도구
로그인
이름공간
문서
토론
변수
보기
읽기
원본 보기
역사 보기
더 보기
검색
주요 메뉴
오픈소스 컨설팅
오픈소스
오픈소스 라이선스
오픈소스 커뮤니티
오픈소스 종류
오픈소스 현황
오픈소스 한글화
문자셋과 인코딩
Storage
Network
보안
고가용성
모니터링
오픈 API
오픈 서비스
Cloud
BigData
Android
산사랑 노트
둘러보기
인기 문서
최근 수정 문서
모든 문서
모든 분류
임의 문서
위키 사용법
자매 사이트
CMS
오비컨 홈페이지
오비컨 CMS
블로그
데모 - SuiteCRM
산사랑의 Twitter
산사랑의 Facebook
친구 사이트
공개SW 포털
OLIS
한국공개소프트웨어협회
AppCenter 지원본부
OLC
PSEG
개발자 블로그
블로터
개인 메뉴
메뉴 수정
양식함
도구
여기를 가리키는 문서
가리키는 글의 최근 바뀜
특수 문서 목록
문서 정보