Utvikler cookbook

4.21. Artikkelutvidelse (tilpasset artikkeleditor)

Bakgrunn

En artikkel i EP kan utvides med tilleggsinformasjon på flere måter. I denne artikkelen skal vi gå igjennom hvordan du kan utvide en artikkel med din egen datamodell og et tilpasset brukergrensesnitt. 

En artikkel kan ha en type, som gir innholdsforfattere et ekstra valg ved opprettelse av artikkel:

 

En artikkeltype kan knyttes til en eller flere artikkelutvidelser (extensions), men vanligvis en enkelt artikkelutvidelse. Dette gjør at man får opp en egen fane til høyre i artikkeleditoren:

 

Fremgangsmåte

1. Opprett tabell i lokal database

Bruk egnet verktøy for å opprette tabell i databasen. I denne artikkelen vil vi ha en tabell med en kolonne "customField1" som er koblet til artikkel-tabellen i en 1:1-relasjon.

CREATE TABLE `article_example` (
  `articleId` int(11) DEFAULT NULL,
  `langId` int(1) DEFAULT '1',
  `customField1` text,
  `customImageField` int(11),
  `selectField` varchar(64),
  `textarea` text,
  `checkbox1` int(1)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

Merk at følgende kolonner er påkrevd: articleId og langId. 

2. Opprett katalog for utvidelsen:

F.eks. /var/www/www.easypublish.no/lib/components/contentTypes/Article/extensions/example

$ ll /var/www/www.easypublish.no/lib/components/contentTypes/Article/extensions/example/
total 12
-rw-r--r-- 1 escio apache 1121 Nov 25  2014 example.php
-rw-r--r-- 1 escio apache 5105 Nov 25  2014 example.xml

 

3. Opprett example.php for å definere datamodell og initialisere utvidelsen:

<?php

include_once 'lib/components/contentTypes/Article/extensions/Article_extension_edao.php';

class Article_example extends Article_extension_edao {

        function Article_example() {
                parent::Article_extension_edao(
                        'article_example', // table name
                        'example', array( // module name
                                'customField1', // columns in table
                        )
                );
                $this->setTabDisplayName('Example extension');
        }
}

 

4. Opprett example.xml for å definere brukergrensesnittet:

<object title="Extension">
    <layoutdefinition>
        <component type="containers.Panel" name="TabPanel">
            <constraints sizeX="100%" />
            <layout type="GridBagLayout" />

            <component type="form.Label" name="label">
                <constraints posX="0" posY="1" />
                <parameters>
                    <parameter key="text" value="Ekstra verdi" />
                </parameters>
            </component>
            <component type="form.Text" name="example-customField1">
                <constraints posX="1" posY="1" />
                <parameters>
                    <parameter key="class" value="text input-block-level"/>
                    <parameter key="width" value="200px"/>
                </parameters>
            </component>

            <component type="form.Label" name="Label">
                <constraints posX="0" posY="2" />
                <parameters>
                    <parameter key="text" value="Bilde" />
                </parameters>
            </component>

            <!-- As ImageSelect2 will use available space, we need to wrap it in a container with a size -->
            <component type="containers.Panel" name="image-holder">
                <layout type="GridBagLayout" />
                <constraints
                    posX="1"
                    posY="2"
                    exactSizeX="200px"
                />

                <component type="form.ImageSelect2" name="example-customImageField">
                    <constraints posX="0" posY="0" />
                </component>
            </component>

            <component type="form.Label" name="label">
                <constraints posX="0" posY="3" />
                <parameters>
                    <parameter key="text" value="Select verdi" />
                </parameters>
            </component>
            <component type="form.Select" name="example-selectField">
                <constraints
                    posX="1"
                    posY="3"
                    />
                <parameters>
                    <parameter key="class" value="input-block-level" />
                    <parameter key="options">
                        <value label="F&amp;oslash;rste" value="first" />
                        <value label="Andre" value="second" />
                        <value label="Tredje" value="third" />
                    </parameter>
                </parameters>
            </component>


            <component type="form.Label" name="label">
                <constraints posX="0" posY="4" />
                <parameters>
                    <parameter key="text" value="Textarea" />
                </parameters>
            </component>
            <component type="form.TextArea" name="example-textarea">
                <constraints
                    posX="1"
                    posY="4"
                    spanX="2"
                    spanY="1"
                    />
                <parameters>
                    <parameter key="width" value="220px" />
                    <parameter key="height" value="150px" />
                </parameters>
            </component>

            <component type="form.Label" name="label">
                <constraints posX="0" posY="5" />
                <parameters>
                    <parameter key="text" value="Checkbox" />
                </parameters>
            </component>
            <component type="form.Checkbox" name="example-checkbox1">
                <constraints
                    posX="1"
                    posY="5"
                    />
            </component>
        </component>
    </layoutdefinition>
</object>

 

5. Registrer utvidelsen i registeret:

LOCAL/SYSTEM/Modules/Article/extensions/example

Opprett nøkkel "path" (string) med verdi og absolutt path til katalogen fra punkt 1, f.eks:

/var/www/www.easypublish.no/lib/components/contentTypes/Article/extensions/example

 

6. Registrer artikkeltypen i registeret:

LOCAL/SYSTEM/Modules/Article/articleTypes/example


Lag følgende nøkler:

Tips

Ved opprettelse av en artikkel fra en nyhetsliste (EP_News), kan man konfigurere at alle artikler som blir opprettes via nyhetslisten automatisk blir opprettet med den aktuelle typen (MERK: bruk prefiks ved navnsetting av extension, f.eks. "local.example"):

 

30.10.15

Hjelp / support

Jeg finner ikke det jeg leter etter

Vår dokumentasjon er stadig under utvikling. Vi endrer og legger til nye kapitler og bøker etter hvert som EasyPublish CMS endrer og vokser. Skulle du likevel ikke finne det du leter etter så ta kontakt med oss via support@escio.no.

Jeg har funnet en feil

Hvis du har funnet en feil i vår dokumentasjon så ønsker vi å rette på den. Send oss et hint til support@escio.no.

Translate

You can translate this documentation by using Google Translate. Select your language:

×