Skip to content

Drupal moduleΒΆ

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
@startuml

skinparam component {
  backgroundcolor<<module>> white
}
skinparam queue {
  backgroundcolor<<service>> white
}
skinparam package {
  backgroundcolor<<core>> lightgreen
}
skinparam database {
  backgroundcolor<<drupal>> lightblue
}
skinparam cloud {
  backgroundcolor<<plugins>> #F4676B
}

database Content <<drupal>> {

  card content [
    Each and every content entity
    on a Drupal site can be
    published to digital signage.
  ]

}

package "Digital Signage Core" <<core>> as core {

  component "DS Content Settings" <<module>> {

    database contentsettings [
      **Content Entity**

      Automatically embedded into each
      other content entity on the site
      using entity inline form.

      Stores properties for each entity
      to determine **where** and **how**
      they should be published on
      platform devices.
    ]

    agent contentevents [
      **Event Subscriber**

      Reacts on each create, update and delete
      event of each entity and if it's published
      on any platform device, marks all those
      devices due for a schedule update.
    ]

  }

  frame "Integration Framework" {

    component Device <<module>> {

      database devices [
        **Content Entity**

        **Bundles**: one for each platform
        **Create and delete**: only by sync
        **Edit**: extra fields can be added
      ]

    }

    component Platform <<module>> {

      agent platform [
        **Plugin Manager**

        Provides the interface for each
        specific platform and allows
        generic implemenation of all
        the processes in DS Core.
      ]

    }

    component Schedule <<module>> {

      database schedules [
        **Content Entity**

        Represents a sequence of content
        entities and is assigned to one or
        many devices.
      ]

      agent schedulegenerator [
        **Schedule Generator Framework**

        Schedules are generated automatically
        driven by the content properties.

        The generator is implemented as a plugin
        so that custom plugins can be installed
        to implement custom rules.
      ]

      agent defaultgenerator [
        **Default Generator**
        --
        This is delivered with the
        Digital Signage Core.

        The documentation for this
        generator can be found [[schedules here]].
      ]
    }

  }

  queue Crons <<service>> {

    agent devicesynccron [
      **Synchronize Devices**
    ]

    agent scheduleupdatecron [
      **Update Schedules**
    ]

    agent publishschedulecron [
      **Publish Schedules**
    ]

  }

}

cloud "Digital Signage Platforms" as platforms <<plugins>> {

  component signageos [
    **signageOS**
    --
    [[https://www.signageos.io]]: Web Site
    [[https://docs.signageos.io]]: API
    [[https://box.signageos.io]]: Dashboard
  ]

  component screenfood [
    **Screenfood**
    --
    [[https://www.screenfoodnet.com]]: Web Site
  ]

  component others [
    **More platforms**
    --
    Each new platform is very simple to integrate
  ]

}

Platform --(0 signageos
Platform --(0 screenfood
Platform --(0 others

Content --> contentevents
contentevents --> devices

platform --> devicesynccron
devicesynccron --> devices
devices --> scheduleupdatecron
scheduleupdatecron --> schedules
schedules --> publishschedulecron
publishschedulecron --> platform

signageos --[hidden] screenfood
screenfood --[hidden] others

@enduml