Unser Sales-Team berät Sie gerne: +49 711 460543 33
Menu

Schneller eigene CRM-Module erstellen in 1CRM

Kickstarter-Shell-Script

Schneller eigene Module kreieren

Shell-Script zum schnellen Erstellen von individuellen CRM-Modulen

Ein neues Modul für 1CRM im Quelltext zu erstellen, erfordert am Anfang immer relativ viel Handarbeit – Ordner anlegen, Dateien anlegen, erweiterte Module hinzufügen. Nicht mit uns haben wir uns gedacht. Und schon vor einiger Zeit ein Shell Script geschrieben, dass uns die Arbeit 08/15-Arbeit abnimmt und dabei noch sicherstellt, dass nicht versehentlich ein Buchstabendreher bei der Ordner-Benennung passiert, der später unnötiges Debugging nach sich zieht.

Das Script muss als ausführbare Datei in das Hauptverzeichnis der 1CRM-Installation gespeichert werden. Nach dem Starten fragt es zuerst nach dem gewünschten Namen für das neue CRM-Modul, ob das Modul eigene Funktionen (d.h. eine eigene Bean und Sichten im CRM System) mitbringen soll. Im Anschluss können Sie noch bereits im CRM-System enthaltene Module wählen, die Sie mit Ihrem Plugin erweitern wollen – diese wandern dann in den ext-Ordner.

Die Erweiterung mit Leben zu füllen erfordert natürlich nach wie vor einige Arbeit, die das Script Ihnen aktuell nicht abnehmen wird – wir sind gespannt auf Feedback und Anregungen…

Das Script ist ein Shell-Script, das unter Linux oder OSX, aber auch unter Windows mit einer CygWin-Shell oder MobaXTerm laufen sollte. Es hat keine grafische Oberfläche und wird auch nicht per Doppelklick gestartet.

Noch ein Wort der Warnung:
Dieses Script sollte nie in einem Live-System verwendet werden – bei falscher Anwendung kann es natürlich ein funktionierendes CRM-System unbrauchbar machen! Verwenden Sie in jedem Fall ein Testsystem als Basis! Wir übernehmen keine Verantwortung (und auch keinen Support) bei der Verwendung des Scriptes.

#!/bin/bash
# This script is made to simplify CRM module creation
# copy it to your 1CRM root directory and make it executable
# start it in place without parameters and answer the questions
# 1. What should be the name of the new module?
# 2. Does your module bring own functionality, or will it only extend other modules?
# 3++. What other modules should be extended (empty for none)

function phpDateiErstellen {
    echo "erstelle PHP Basisdatei in $1"
    case "$1" in
        "models")
            dateiname=modules/${modulName}/$1/bean.${modulName}.php
            tabellenname=$(echo $modulName | tr '[:upper:]' '[:lower:]')

            cat <<EOF > ${dateiname}
<?php return; ?>
detail
	type: bean
	bean_file: modules/${modulName}/${modulName}.php
	unified_search: false
	activity_log_enabled: true
	duplicate_merge: false
	optimistic_locking: true
	table_name: ${tabellenname}
	primary_key: id
	reportable: true
hooks
fields
	app.id
	app.date_entered
	app.date_modified
	app.assigned_user
	app.modified_user
	app.created_by_user
	app.deleted
	name
		vname: LBL_SUBJECT
		type: name
		len: 150
		vname_list: LBL_LIST_SUBJECT
		unified_search: true
		required: true
EOF
        ;;
        "views")
        for viewType in "record" "list" #pre7.7: "edit" "view"
            do
                dateiname=modules/${modulName}/$1/${viewType}.Standard.php
                zweiterTyp=${viewType}
                if [ "$viewType" == "edit" ]
                    then zweiterTyp="editview"
                fi
                cat <<EOT > ${dateiname}
<?php return; /* no output */ ?>

detail
    type: ${zweiterTyp}
    title: LBL_MODULE_TITLE
layout
EOT

                if [ "$viewType" == "view" -o "$viewType" == "edit" -o "$viewType" == "record"]
                    then
                        cat <<EOF >> ${dateiname}
    sections
		--
			id: main
			elements
                --
                	name: name
    subpanels
EOF
                fi
        done
        ;;
        "metadata")
            dateiname=modules/${modulName}/$1/module_info.php
            cat <<EOF > ${dateiname}
<?php return; /* no output */ ?>

detail
	primary_bean: ${modulName}
	tab_visibility: normal
	default_group: LBL_TABGROUP_TODAY_ACTIVITIES
	mobile_interface: true
basic_pdf_template: true
EOF
        ;;
        "display") suffix="bean"
            dateiname=modules/${modulName}/$1/display.${modulName}.php
            cat <<EOF > ${dateiname}
<?php return; ?>

EOF
        ;;
        "language")
            for sprache in "de_DE" "en_us"
                do
                    dateiname=modules/${modulName}/$1/lang.${sprache}.strings.php
                    cat <<EOF > ${dateiname}
<?php return; ?>

LBL_MODULE_TITLE: ${modulName}

EOF

                done
        ;;
    esac
}
function leerePHPDateiErstellen {
    echo "<?php return; ?>" > "$1"
}

function erweitereModul {
    basisOrdner="modules/${modulName}/ext/modules/${1}"
    mkdir -p ${basisOrdner}/models
    # bean kann anders heissen
    mkdir -p ${basisOrdner}/views
    #leerePHPDateiErstellen ${basisOrdner}/views/view.Standard.php #pre7.7
    #leerePHPDateiErstellen ${basisOrdner}/views/edit.Standard.php #pre7.7
    leerePHPDateiErstellen ${basisOrdner}/views/record.Standard.php
    leerePHPDateiErstellen ${basisOrdner}/views/list.Standard.php
    mkdir -p ${basisOrdner}/language
    leerePHPDateiErstellen ${basisOrdner}/language/lang.de_DE.strings.php
    leerePHPDateiErstellen ${basisOrdner}/language/lang.en_us.strings.php
    mkdir -p ${basisOrdner}/display
    mkdir -p ${basisOrdner}/metadata
}

## Hauptpart ##

read -p "Wie soll das neue Modul heissen? " modulName

#Basisverzeichnisse
read -p "Soll das Modul ${modulName} eigene Funktionalitaet haben? [J|n]: " antwort
case $antwort in
    j|J|"")
        for ordner in "models" "views" "metadata" "display" "language"
            do
                mkdir -p modules/${modulName}/${ordner}

                phpDateiErstellen ${ordner}
        done
        # die Klasse erstellen
        cat <<EOF > modules/${modulName}/${modulName}.php
<?php
if(!defined('sugarEntry') || !sugarEntry) die('Not A Valid Entry Point');
require_once('data/SugarBean.php');
class ${modulName} extends SugarBean {


}
EOF
     ;;
esac

#Erweiterung vorhandener Module
while true
    do
    read -p "Welches andere Modul soll erweitert werden? (leer fuer keins): " modulErweiterung
    if [ "$modulErweiterung" == "" ]
        then
            break
    fi
    if [ ! -d "modules/${modulErweiterung}" ]
        then
            echo "Das Modul ${modulErweiterung} existiert nicht"
            continue
    fi
    echo "Erstelle Erweiterungen fuer $modulErweiterung"
    erweitereModul $modulErweiterung
done


Noch Fragen? Dann besuchen Sie uns auf Xing

Werden Sie Teil der 1CRM-Community

Die 1CRM-Usergroup bringt Anwender aus den unterschiedlichsten Bereichen mit anderen Anwendern und Entwicklern zusammen. In der Xing-Gruppe erhalten Sie aktuelle Informationen zur CRM-Lösung 1CRM, z. B. Produkt-Updates, neue Features, Webinar-Termine und können sich mit anderen CRM-Anwendern austauschen. Stellen Sie sich und Ihr Geschäft gerne im Forum „Vorstellungsrunde“ vor und schildern Sie kurz, wie Sie 1CRM einsetzen.

1CRM-Anwender und -Entwickler beantworten Ihre Fragen

Neu bei 1CRM? So richten Sie das CRM-System ein

CRM-Updates testen und einspielen

CRM-Updates testen und einspielenDas sollten Sie beim Einspielen von 1CRM-Updates beachtenSteht ein neues Update für 1CRM zur Verfügung, empfehlen wir das hier beschriebene Vorgehen.Insbesondere, wenn Ihr System individuell angepasst ist, kann es zu unvorhergesehen...

Datenschutzeinstellungen gemäß DSGVO

CRM datenschutzkonform einrichten Das sollten Sie noch vor der alltäglichen Bedienung des Systems einstellen Die aktuelle Datenschutzverordnung verpflichtet Sie zu einem besonderen Umgang mit personenbezogenen Daten. Damit Sie die Anforderungen der...

CRM upgraden

Sie möchten zu einer anderen 1CRM-Edition wechseln? Oder in die Cloud? Erfahren Sie, wie Sie auf eine andere 1CRM-Lizenz umsteigen oder von On-Premises auf die Cloud. Ein großer Vorteil von 1CRM ist das flexible Lizenz- und Hosting-Modell. In dieser Anleitung zeigen...

Benutzerkonten im CRM anlegen

CRM-Benutzer für Ihre Mitarbeiter anlegen So richten Sie Benutzerkonten in 1CRM ein Sie können in 1CRM so viele Benutzer anlegen, wie Sie Lizenzen erworben haben (mit der kostenlosen Startup Edition können Sie noch weitere 2 Benutzer anlegen). In dieser Anleitung...

E-Mail im CRM: sendmail oder SMTP?

E-Mails im CRM: sendmail oder SMTP Hintergrundwissen zum Einrichten des E-Mail-Versands in 1CRM In 1CRM lassen sich E-Mails über sendmail oder SMTP versenden. Die zwei Begriffe sagen Ihnen nichts? Der folgende Text erklärt, was hinter den Begriffen steht, wann Sie...