PHPackages                             alpdesk/alpdesk-frontendediting - 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. alpdesk/alpdesk-frontendediting

ActiveContao-bundle[Utility &amp; Helpers](/categories/utility)

alpdesk/alpdesk-frontendediting
===============================

Frontendediting for Contao 4

1.3.1(3y ago)99471[2 issues](https://github.com/xprojects-de/alpdesk-frontendediting/issues)[5 PRs](https://github.com/xprojects-de/alpdesk-frontendediting/pulls)MITPHPPHP ^8.0

Since Dec 17Pushed 2y ago1 watchersCompare

[ Source](https://github.com/xprojects-de/alpdesk-frontendediting)[ Packagist](https://packagist.org/packages/alpdesk/alpdesk-frontendediting)[ Docs](https://github.com/xprojects-de/alpdesk-frontendediting)[ RSS](/packages/alpdesk-alpdesk-frontendediting/feed)WikiDiscussions main Synced 3w ago

READMEChangelog (10)Dependencies (10)Versions (47)Used By (0)

Alpdesk Frontend-Editing für Contao
===================================

[](#alpdesk-frontend-editing-für-contao)

[![Version](https://camo.githubusercontent.com/b75076aa67d3826064d399f3dd555bf15de9f8dc9b11bac412f7d22f63971d10/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f762f616c706465736b2f616c706465736b2d66726f6e74656e6465646974696e67)](https://packagist.org/packages/alpdesk/alpdesk-frontendediting)[![Contao Version](https://camo.githubusercontent.com/8adfb202f48b8c556bdfcf4c4d371881baf67a5c6587617ed3254d0ab4bb5215/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f436f6e74616f2d253545342e392d6f72616e6765)](https://contao.org)

Mit Hilfe dieser Erweiterung lässt sich deine Webseite visuell direkt im Backend bearbeiten.

Repo Angular/Javascript Sourcen
-------------------------------

[](#repo-angularjavascript-sourcen)

Wiki
----

[](#wiki)

Konzept
-------

[](#konzept)

Die Erweiterung ist ein normales Backendmodul und läuft somit direkt im Backend-Scope. Auf Basis von Angular (kompiliert dann natives Javascript) werden Bearbeitungssymbole direkt visuell im View dargestellt. Augfrund der Same-Origin-Policy ist es mit Hilfe von Javascript möglich, dass Backend und Frontend miteinander agieren. Das Backend bedient sich dann dem mächtigen Backend-Editing von Contao indem einfach die passenden URLs in einem Overlay-Dialog angezeigt werden. Somit steht das komplette Backend-Editing wie gewohnt zur Verfügung, nur halt ein bisschen visueller dargestellt.

Wird die Frontend-Vorschau aufgerufen, sind die Elemente nicht verfügbar, was auch so gewollt ist :-)

Verwendung
----------

[](#verwendung)

Die Erweiterung gliedert sich als normales BackendModul ins Contao-Backend ein und lässt sich pro User aktivieren bzw. deaktivieren. Desweiteren wird das komplette Rechtemanagement von Contao beachtet. So können z.B. nur die Inhaltselemente bearbeitet werden, welche den Rechten des Backend-Users entsprechen. Weiter kann zusätzlich in den Benutzereinstellungen angewählt werden, welche Elemente dem Benutzer angezeigt werden. Somit kann z.B. auch ein berechtiges Inhaltselement ausgeblendet werden.

Was kann alles editiert werden
------------------------------

[](#was-kann-alles-editiert-werden)

- Alle Inhalselemente
- Newsmodul (Newsliste und Newsreader)
- Eventmodul (Eventliste und Eventreader)
- RocksolidSlider
- Formulare
- ... mehr werden folgen wenn diese gebraucht werden :-) Aber man kann auch auch selber tätig werden... (siehe Technisches)

Mapping Backendmodule zu Inhaltselementen und Frontendmodulen
-------------------------------------------------------------

[](#mapping-backendmodule-zu-inhaltselementen-und-frontendmodulen)

Die Herausforderung am Frontendediting ist nicht der Support der Inhalselemente und Frontendmodule an sich, sondern das passende Mapping zum passenden Backendmodul wo die Inhalte editiert werden können. Die Erweiterung selber wird stehts weiterenwtickelt werden und die Standardmodule von Contao bei Zeit supporten (Events, Formulare, etc.). Aber es ist es auch möglich die eigene Erweiterung über das Symfony-Eventhandling ins Frontend zum Editieren zu bringen. (mehr unter Technisches).

Sonstiges
---------

[](#sonstiges)

- Die Erweiterung verwendet bewusst keine Javascript-Libs und kommt mit nativem Javascript aus. Es wird zwar alles auf Basis von Angular programmiert, aber nach dem kompilieren ist es dann wirkliches natives Javascript. Somit sollte es keine Probleme im Frontend geben
- Tests wurden mit den aktuellen Versionen von Firefox, Chrome und Safari und jeweils mit der Contao::LTS und Contao::Latest durchgeführt

Die Erweiterung sollte voll funktionsfähig sein, bis auf die Bugs die ich selber nicht gefunden habe :-) Aber dennoch ist Sie noch "frisch" und ich bin über jegliches Feedback froh was die Erweiterung weiter bringt.

Technisches
-----------

[](#technisches)

- Die Erweiterung stellt drei Events bereit (alpdeskfrontendediting.element, alpdeskfrontendediting.module und alpdeskfrontendediting.form) auf welche man sich per EventListener registieren kann.
- Das Event wird bei bei jedem Rendern eines FrontendModules und Inhaltselement getriggert und liefert jeweils das Model und das spezifische FrontendEditing-Object (Hooks getContentElement und getFrontendModule). Auf diesem Wege können vorhandene Frontend-Bar-Items angepasst werden oder sogar neue, eigene Frontend-Bar-Items hinzugefügt werden und mit passender Logik zum BackendModul versehen werden.

Beispiel um einen eigenen Icon für ein Inhaltselement einzufügen:

```
# service.yml oder listener.yml

services:

  projects.listener.alpdeskfrontendediting.element:
    class: XProjects\Projects\Events\ProjectsAlpdeskFrontendViewListener
    tags:
      - { name: kernel.event_listener, event: alpdeskfrontendediting.element}
```

```
// Passende Eventklasse dazu
// Modul funktioniert analog

declare(strict_types=1);

namespace XProjects\Projects\Events;

use Alpdesk\AlpdeskFrontendediting\Events\AlpdeskFrontendeditingEventElement;
use Contao\Input;
use Contao\Database;

class ProjectsAlpdeskFrontendViewListener {

  private static $icon = '../../../system/themes/flexible/icons/tablewizard.svg';
  private static $iconclass = 'tl_projects_baritem';

  public function __invoke(AlpdeskFrontendeditingEventElement $event): void {

    if ($event->getElement()->type === 'xprojects_overview') {
      $event->getItem()->setValid(true);
      $event->getItem()->setIcon(self::$icon);
      $event->getItem()->setIconclass(self::$iconclass);
      $event->getItem()->setPath('do=xprojects');
      $event->getItem()->setLabel($GLOBALS['TL_LANG']['projects_label']);
    } else if ($event->getElement()->type === 'xprojects_detail') {
      $alias = Input::get('projekte');
      if ($alias !== null && $alias !== '') {
        // Better use Model but Extention does not have a model
        $projectObj = Database::getInstance()->prepare("SELECT id FROM tl_xprojects WHERE alias=?")->execute($alias);
        if ($projectObj->numRows > 0) {
          $event->getItem()->setValid(true);
          $event->getItem()->setIcon(self::$icon);
          $event->getItem()->setIconclass(self::$iconclass);
          $event->getItem()->setPath('do=xprojects&table=tl_content&id=' . $projectObj->id);
          $event->getItem()->setLabel($GLOBALS['TL_LANG']['projects_label']);
        }
      }
    }
  }

}
```

- Ist kein Backend-User eingelogged wird der ganze "zusätzliche" Code NICHT ausgeführt und die Hooks werden sofort wieder verlassen. Somit gibt es hier keine Performanceprobleme im normalen Betrieb.

Was ist noch zu tun?
--------------------

[](#was-ist-noch-zu-tun)

- Module optimieren (z.B. möglich machen die Teaser der Newsliste auch einzeln bearbeitbar zu machen)
- Weitere Module untersützen
- Bugfixing
- ...

Für diese Erweiterung übernehme ich keinerlei Haftung!

Bilder
------

[](#bilder)

[![](https://camo.githubusercontent.com/ef63499d3abcf5b59927b08c07f8e94c8984a3ea92794d0fbe701885b4e6e86f/68747470733a2f2f782d70726f6a656374732e64652f66696c65732f616c706465736b2f66726f6e74656e6465646974696e672f76312e312e302f62696c64312e706e67)](https://camo.githubusercontent.com/ef63499d3abcf5b59927b08c07f8e94c8984a3ea92794d0fbe701885b4e6e86f/68747470733a2f2f782d70726f6a656374732e64652f66696c65732f616c706465736b2f66726f6e74656e6465646974696e672f76312e312e302f62696c64312e706e67)

[![](https://camo.githubusercontent.com/a121be2d03d38bb7e013c99a7733e03123feeede21b7537bd8d51eaf0116f871/68747470733a2f2f782d70726f6a656374732e64652f66696c65732f616c706465736b2f66726f6e74656e6465646974696e672f76312e312e302f62696c64322e706e67)](https://camo.githubusercontent.com/a121be2d03d38bb7e013c99a7733e03123feeede21b7537bd8d51eaf0116f871/68747470733a2f2f782d70726f6a656374732e64652f66696c65732f616c706465736b2f66726f6e74656e6465646974696e672f76312e312e302f62696c64322e706e67)

[![](https://camo.githubusercontent.com/1ccedb5390a18b6f8a60f32e5926ef0c723dd0a0d2694956d8ab2e3f8cad48d7/68747470733a2f2f782d70726f6a656374732e64652f66696c65732f616c706465736b2f66726f6e74656e6465646974696e672f76312e312e302f62696c64332e706e67)](https://camo.githubusercontent.com/1ccedb5390a18b6f8a60f32e5926ef0c723dd0a0d2694956d8ab2e3f8cad48d7/68747470733a2f2f782d70726f6a656374732e64652f66696c65732f616c706465736b2f66726f6e74656e6465646974696e672f76312e312e302f62696c64332e706e67)

[![](https://camo.githubusercontent.com/14fd83da59dd4e11ca02cbafed65a01eea71da363b982738577c5f12b32b0cea/68747470733a2f2f782d70726f6a656374732e64652f66696c65732f616c706465736b2f66726f6e74656e6465646974696e672f76312e312e302f62696c64342e706e67)](https://camo.githubusercontent.com/14fd83da59dd4e11ca02cbafed65a01eea71da363b982738577c5f12b32b0cea/68747470733a2f2f782d70726f6a656374732e64652f66696c65732f616c706465736b2f66726f6e74656e6465646974696e672f76312e312e302f62696c64342e706e67)

[![](https://camo.githubusercontent.com/a97c2a38aa84410f0e5a466c69f5ac31883fc5425adf1429d3f34dc6148f669a/68747470733a2f2f782d70726f6a656374732e64652f66696c65732f616c706465736b2f66726f6e74656e6465646974696e672f76312e312e302f62696c64352e706e67)](https://camo.githubusercontent.com/a97c2a38aa84410f0e5a466c69f5ac31883fc5425adf1429d3f34dc6148f669a/68747470733a2f2f782d70726f6a656374732e64652f66696c65732f616c706465736b2f66726f6e74656e6465646974696e672f76312e312e302f62696c64352e706e67)

[![](https://camo.githubusercontent.com/5a15eed510154b8c04caba6dcfb6a3c5528aa2d2760df4a72dcb64da00cd5c25/68747470733a2f2f782d70726f6a656374732e64652f66696c65732f616c706465736b2f66726f6e74656e6465646974696e672f76312e312e302f62696c64362e706e67)](https://camo.githubusercontent.com/5a15eed510154b8c04caba6dcfb6a3c5528aa2d2760df4a72dcb64da00cd5c25/68747470733a2f2f782d70726f6a656374732e64652f66696c65732f616c706465736b2f66726f6e74656e6465646974696e672f76312e312e302f62696c64362e706e67)

[![](https://camo.githubusercontent.com/5ce31afd19430356f9b2b6884dbf74cb159f8e6d5efc21fcc8e2174a589dedc8/68747470733a2f2f782d70726f6a656374732e64652f66696c65732f616c706465736b2f66726f6e74656e6465646974696e672f76312e312e302f62696c64372e706e67)](https://camo.githubusercontent.com/5ce31afd19430356f9b2b6884dbf74cb159f8e6d5efc21fcc8e2174a589dedc8/68747470733a2f2f782d70726f6a656374732e64652f66696c65732f616c706465736b2f66726f6e74656e6465646974696e672f76312e312e302f62696c64372e706e67)

###  Health Score

33

—

LowBetter than 72% of packages

Maintenance16

Infrequent updates — may be unmaintained

Popularity21

Limited adoption so far

Community8

Small or concentrated contributor base

Maturity71

Established project with proven stability

 Bus Factor1

Top contributor holds 100% 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 ~14 days

Recently: every ~3 days

Total

42

Last Release

1416d ago

PHP version history (3 changes)1.0.0PHP &gt;=7.2

1.2.6PHP &gt;=7.4

1.3.0-RC0PHP ^8.0

### Community

Maintainers

![](https://www.gravatar.com/avatar/85a471c53ba8e0ef2fface4844b72415a523f1118e3bea30e78db4683ecd304d?d=identicon)[xprojects](/maintainers/xprojects)

---

Top Contributors

[![xprojects-de](https://avatars.githubusercontent.com/u/55982921?v=4)](https://github.com/xprojects-de "xprojects-de (274 commits)")

---

Tags

contaofrontendediting

###  Code Quality

TestsPHPUnit

Static AnalysisPHPStan

Type Coverage Yes

### Embed Badge

![Health badge](/badges/alpdesk-alpdesk-frontendediting/health.svg)

```
[![Health](https://phpackages.com/badges/alpdesk-alpdesk-frontendediting/health.svg)](https://phpackages.com/packages/alpdesk-alpdesk-frontendediting)
```

###  Alternatives

[codefog/contao-haste

haste extension for Contao Open Source CMS

41668.4k162](/packages/codefog-contao-haste)[metamodels/core

MetaModels core

9956.1k68](/packages/metamodels-core)[madeyourday/contao-rocksolid-custom-elements

Create your own, nestable content elements using a modular system. End the WYSIWYG chaos with your own content elements.

51351.3k14](/packages/madeyourday-contao-rocksolid-custom-elements)[codefog/contao-news_categories

News Categories bundle for Contao Open Source CMS

3187.0k6](/packages/codefog-contao-news-categories)[terminal42/contao-node

Node bundle for Contao Open Source CMS

3075.6k5](/packages/terminal42-contao-node)[terminal42/contao-folderpage

Provides a new page type for Contao that allows you to group pages into folders.

18153.4k10](/packages/terminal42-contao-folderpage)

PHPackages © 2026

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