https://github.com/opencontentcoop/oceditorialstuff
https://github.com/opencontentcoop/oceditorialstuff
Last synced: 5 months ago
JSON representation
- Host: GitHub
- URL: https://github.com/opencontentcoop/oceditorialstuff
- Owner: OpencontentCoop
- Created: 2016-02-22T16:25:03.000Z (over 10 years ago)
- Default Branch: master
- Last Pushed: 2025-09-11T07:14:55.000Z (10 months ago)
- Last Synced: 2025-10-11T12:12:39.157Z (9 months ago)
- Language: JavaScript
- Size: 323 KB
- Stars: 0
- Watchers: 1
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: readme.md
Awesome Lists containing this project
README
# OpenContent Editorial Stuff
## Introduzione
L'estensione **OpenContent Editorial Stuff** serve ad esporre alla redazione web una dashboard di pubblicazione orientata al workflow. Permette di configurare più dashboard ciascuna orientata a una classe di contenuto.
Di default l'estensione permette:
* l'asseganzione di stati,
* un motore di ricerca filtrabile per stati,
* l'accesso alla modifica dei contenuti,
* l'inserimento *smart and mobile* dei file media,
* l'invio di mail collaborative a uno o più utenti con il contentuto dell'oggetto
* l'invio di tweet o feed Facebook (se NGPush è stata correttamente configurata)
* la visualizzazione della cronologia delle modifiche
* la visualizzazione di commenti interni
## Requisiti
* eZPublish Legacy versione > 4.7
* Estensione OCBootstrap
* Estensione OCSearchTools
* Estensione OCOperatorsCollection
* Estensione NGPush (opzionale)
## Installazione
* Clonare l'estensione nella cartella `/extension`
* Importare nel database la tabella schema.sql
* Rigenerare autoloads e svuotare cache ini e templates
* Customizzare il file `editorialstuff.ini` in un suo override
## Utilizzo e customizzazione
### Configurazione di una dashboard
Ciascuna dashboard corrisponde a una configurazione presente nel file `editorialstuff.ini`.
Le dashboard attive sono quelle presenti in `AvailableFactories/Identifiers` ciascuna raggiungibile dal percorso `http:///editorialstuff/dashboard/`.
Di default l'estensione viene rilasciata con un dashboard **demo**, raggiungibile da `http:///editorialstuff/dashboard/demo`, le cui impostazioni sono definite nel blocco `demo` (esattemente come l'identifier).
[demo]
ClassIdentifier=folder
CreationRepositoryNode=2
CreationButtonText=Crea nuova cartella
RepositoryNodes[]
RepositoryNodes[]=1
AttributeIdentifiers[]
AttributeIdentifiers[images]=images
AttributeIdentifiers[videos]=video
AttributeIdentifiers[audios]=audio
AttributeIdentifiers[tags]=argomento
StateGroup=test
States[draft]=Bozza
States[published]=Pubblicato
#ClassName=YourCustomPHPClass
- in `ClassIdentifier`va definito l'identificatore della classe in cui oggetti saranno visualizzati e gestiti in dashboard
- in `CreationRepositoryNode` va specificato il nodo parent ove vengono creati nuovi oggetti attraverso il bottone presente in dashbaord
- in `CreationButtonText`va definita l'etichetta del bottone di cui al punto precedente
- in `RepositoryNodes` vanno definiti i nodi parent da cui fecciare gli oggetti in dashboard
- in `AttributeIdentifiers` vanno mappati gli attributi della classe: images, videos e audios devono essere attributi di tipo ***Relazioni Oggetti (eZObjectRelationList)***, tags di tipo ***eZTags***. Sono opzionali, se non vengono specificati alcune funzionalità non saranno disponibili
- in `StateGroup`e in `States`vanno specificati il gruppo e gli stati (identificatore=>nome) che la dashboard prenderà in considerazione (se non sono presenti nel sistema, l'estensione provvederà a crearli)
### Utilizzare le Actions
L'estensione fornisce di default due azioni `AddLocation` e `RemoveLocation`.
[AvailableActions]
Actions[]
Actions[]=AddLocation
Actions[]=RemoveLocation
[AddLocation]
ClassName=OCEditorialStuffActionHandler
MethodName=addLocation
[RemoveLocation]
ClassName=OCEditorialStuffActionHandler
MethodName=removeLocation
Nel gruppo di configurazione della singola dashboard è possibile specificare che azione compiere al passaggio da uno stato all'altro.
[demo]
...
Actions[]
Actions[draft-published]=AddLocation;43;5
Actions[published-draft]=RemoveLocation;43;5
Nell'esempio di configurazione appena descritto, l'estensione al passaggio di un oggetto da stato draft a stato published provvederà a eseguire la funzione `OCEditorialStuffActionHandler::addLocation` passandole come parametri gli id 43 3 5 oltre che il contenuto corrente (OCEditorialStuffPost)
Viceversa al passaggio da stato published a stato draft utilizzerà la funzione opposta `OCEditorialStuffActionHandler::removeLocation`
Per aggiungere azioni è sufficiente elencarne il titolo nella configurazione `AvailableActions` e specificarne in un blocco ad hoc la classe e il metodo da invocare.
Il metodo invocato si aspetta come primo paramtero il contenuto corrente (OCEditorialStuffPost) e come secondo parametro l'array dei valori specificati nel file di configurazione.
Nell'esempio su descritto il metodo php invocato è:
// $addLocationIds = array( 43, 5 );
public static function addLocation( OCEditorialStuffPost $post, $addLocationIds )
{
$object = $post->getObject();
if ( $object instanceof eZContentObject )
{
eZContentOperationCollection::addAssignment(
$object->attribute( 'main_node_id' ),
$object->attribute( 'id' ),
$addLocationIds
);
}
else
{
eZDebug::writeError( "Object not found", __METHOD__ );
}
}
### Customizzazione dell'intera classe PHP responsabile dei cambiamenti
[demo]
...
ClassName=YourCustomPHPClass
Infine nel parametro opzionale `ClassName` è possibile specificare la classe PHP che si occuperà di gestire ciascun singolo post. Se il parametro non è specificato verrà utilizzata la classe `OCEditorialStuffPostDefaultFactory`
Definire una classe custom serve a customizzare ciò che avviene al passaggio di stato: la classe deve infatti estendere la classe astratta `OCEditorialStuffPostFactory` e perciò implemetare il metodo `onChangeState`, ad esempio:
class MyCustomEditorialStuffPostFactory extends OCEditorialStuffPostFactory
{
// se lo stato dell'oggetto viene cambiato da 'foo' a 'bar'
// all'oggetto viene aggiunta una collocazione in Media
public function onChangeState(
OCEditorialStuffPost $post,
eZContentObjectState $beforeState,
eZContentObjectState $afterState
)
{
$currentObject = $post->getObject();
if ( $beforeState->attribute( 'identifier' ) == 'foo'
&& $afterState->attribute( 'identifier' ) == 'bar' )
{
OCEditorialStuffHistory::addHistoryToObjectId( $post->id(), 'My custom history item', array( 'name' => 'My custom history item parameter' ) );
}
}
}
(Da notare che l'oggetto OCEditorialStuffPost $post incapsula un eZContentObject.)
### Attivazione della chat interna
Per attivare i commenti interni è necessario creare un attributo di tipo ***Commenti (ezcomComments)*** nella classe specificata: l'attributo ***deve*** avere come identificatore `internal_comment`