PHPackages                             opencontent/oceditorialstuff-ls - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Utility &amp; Helpers](/categories/utility)
4. /
5. opencontent/oceditorialstuff-ls

ActiveEzpublish-legacy-extension[Utility &amp; Helpers](/categories/utility)

opencontent/oceditorialstuff-ls
===============================

OpenContent Editorial Stuff

2.6.1(2mo ago)05.6k↑100%11GPL-2.0JavaScript

Since Jan 17Pushed 2mo ago1 watchersCompare

[ Source](https://github.com/OpencontentCoop/oceditorialstuff)[ Packagist](https://packagist.org/packages/opencontent/oceditorialstuff-ls)[ RSS](/packages/opencontent-oceditorialstuff-ls/feed)WikiDiscussions master Synced today

READMEChangelogDependencies (2)Versions (31)Used By (1)

OpenContent Editorial Stuff
===========================

[](#opencontent-editorial-stuff)

Introduzione
------------

[](#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
---------

[](#requisiti)

- eZPublish Legacy versione &gt; 4.7
- Estensione OCBootstrap
- Estensione OCSearchTools
- Estensione OCOperatorsCollection
- Estensione NGPush (opzionale)

Installazione
-------------

[](#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
--------------------------

[](#utilizzo-e-customizzazione)

### Configurazione di una dashboard

[](#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=&gt;nome) che la dashboard prenderà in considerazione (se non sono presenti nel sistema, l'estensione provvederà a crearli)

### Utilizzare le Actions

[](#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

[](#customizzazione-dellintera-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

[](#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`

###  Health Score

52

—

FairBetter than 96% of packages

Maintenance82

Actively maintained with recent releases

Popularity23

Limited adoption so far

Community15

Small or concentrated contributor base

Maturity74

Established project with proven stability

 Bus Factor1

Top contributor holds 60% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~133 days

Recently: every ~105 days

Total

29

Last Release

89d ago

Major Versions

1.2.2 → 2.02018-04-03

### Community

Maintainers

![](https://www.gravatar.com/avatar/4bb0695337c30a80b955ef72819273442a7dcbcfd69f99b80a28084d170bba0a?d=identicon)[Opencontent](/maintainers/Opencontent)

---

Top Contributors

[![Opencontent](https://avatars.githubusercontent.com/u/972033?v=4)](https://github.com/Opencontent "Opencontent (72 commits)")[![lrealdi](https://avatars.githubusercontent.com/u/14081241?v=4)](https://github.com/lrealdi "lrealdi (44 commits)")[![coppo](https://avatars.githubusercontent.com/u/10260956?v=4)](https://github.com/coppo "coppo (2 commits)")[![lorello](https://avatars.githubusercontent.com/u/694058?v=4)](https://github.com/lorello "lorello (2 commits)")

### Embed Badge

![Health badge](/badges/opencontent-oceditorialstuff-ls/health.svg)

```
[![Health](https://phpackages.com/badges/opencontent-oceditorialstuff-ls/health.svg)](https://phpackages.com/packages/opencontent-oceditorialstuff-ls)
```

###  Alternatives

[ezsystems/eztags-ls

eZ Tags is an extension for eZ Publish, providing more functionality for tagging content objects than ezkeyword datatype included in eZ Publish kernel.

40204.3k3](/packages/ezsystems-eztags-ls)[ezsystems/ezautosave-ls

Content editing autosave extension for eZ Publish legacy

22426.3k3](/packages/ezsystems-ezautosave-ls)[ezsystems/legacy-bridge

eZ Platform bridge to eZ Publish Legacy

17118.9k5](/packages/ezsystems-legacy-bridge)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
