billy_cms 0.0.15 → 0.0.17

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -7,9 +7,14 @@ BillyCms.API_BASE_URL = '/billy_cms/api/pages';
7
7
  BillyCms.Editing = {
8
8
  isEditModeOn: false,
9
9
 
10
- setEditMode(state) {
10
+ setEditMode(state, element) {
11
11
  this.isEditModeOn = state;
12
- var editableFields = $('[contenteditable]');
12
+ var editableFields;
13
+ if (element) {
14
+ editableFields = $(element).parents('.page-wrapper').first().find('[contenteditable]');
15
+ } else {
16
+ editableFields = $('[contenteditable]');
17
+ }
13
18
  var container = $('.container');
14
19
  if (state === true) {
15
20
  container.addClass('edit-mode-enabled');
@@ -44,7 +49,7 @@ BillyCms.Editing = {
44
49
 
45
50
  $(function() {
46
51
  $('.billycms_edit_button').on('click', function() {
47
- BillyCms.Editing.setEditMode(!BillyCms.Editing.isEditModeOn);
52
+ BillyCms.Editing.setEditMode(!BillyCms.Editing.isEditModeOn, this);
48
53
  });
49
54
 
50
55
  $('.page-content-binary input[type=file]').on('change', function(evt) {
@@ -31,4 +31,8 @@ span.delete-link {
31
31
  &:hover {
32
32
  color: #ff1e2e;
33
33
  }
34
+ }
35
+
36
+ md-tab-content > div {
37
+ display: flex;
34
38
  }
@@ -5,10 +5,6 @@
5
5
  font-size: 13px;
6
6
  background-color: #C1C1C1;
7
7
  color: #fff;
8
- position: absolute;
9
- font-weight: 100px;
10
- left: 1em;
11
- min-width: 85px;
12
8
  outline: none;
13
9
  &:hover {
14
10
  background-color: #E6B0B0;
@@ -24,8 +20,13 @@
24
20
  }
25
21
  }
26
22
 
23
+ .billycms-edit-page-buttons {
24
+ border-top: 1px solid #000;
25
+ padding-top: .5em;
26
+ }
27
+
27
28
  .edit-mode-enabled {
28
- [contenteditable], .page-content-binary {
29
+ [contenteditable=true], .page-content-binary {
29
30
  border: 1px solid #F3B9B9;
30
31
  background-color: #FFF0F0;
31
32
  min-height: 1em;
@@ -70,8 +71,6 @@
70
71
 
71
72
  .billycms_settings_button {
72
73
  @include editbutton;
73
- top: 12em;
74
- z-index: 100;
75
74
  &::before {
76
75
  content: 'Seiteneinstellungen';
77
76
  }
@@ -7,5 +7,26 @@ module Api
7
7
  def show
8
8
  render json: BillyCms::PageType.find(params[:id])
9
9
  end
10
+
11
+ def create
12
+ render nothing: true, status: 400 unless params[:page_type]
13
+ page_type = BillyCms::PageType.new page_type_params
14
+ if page_type.save
15
+ render json: {
16
+ success: true,
17
+ page_type: page_type
18
+ }
19
+ else
20
+ render json: {
21
+ success: false,
22
+ error: page_type.error_messages,
23
+ }, status: 500
24
+ end
25
+ end
26
+
27
+ private
28
+ def page_type_params
29
+ params.require(:page_type).permit(:title, :name) if current_user.admin?
30
+ end
10
31
  end
11
32
  end
@@ -9,7 +9,7 @@ module Api
9
9
  end
10
10
 
11
11
  def update
12
- render nothing: true, status: 400 unless params[:page]
12
+ return render nothing: true, status: 400 unless params[:page]
13
13
  page = BillyCms::Page.find params[:id]
14
14
  if page.update_attributes page_params
15
15
  render json: {
@@ -25,7 +25,7 @@ module Api
25
25
  end
26
26
 
27
27
  def create
28
- render nothing: true, status: 400 unless params[:page]
28
+ return render nothing: true, status: 400 unless params[:page]
29
29
  page = BillyCms::Page.new page_params
30
30
  if page.save
31
31
  render json: {
@@ -41,8 +41,9 @@ module Api
41
41
  end
42
42
 
43
43
  def destroy
44
- render :nothing, status: 400 unless params[:id]
45
- if BillyCms::Page.delete(params[:id])
44
+ return render :nothing, status: 400 unless params[:id]
45
+ return render :nothing, status: 404 unless page = BillyCms::Page.where(id: params[:id]).first
46
+ if page.destroy
46
47
  render json: {
47
48
  success: true
48
49
  }
@@ -7,7 +7,7 @@ module BillyCms
7
7
  extend FriendlyId
8
8
  friendly_id :title, use: :slugged
9
9
 
10
- has_many :pages, class_name: 'Page', foreign_key: :parent_page_id
10
+ has_many :pages, class_name: 'Page', foreign_key: :parent_page_id, :dependent => :destroy
11
11
  belongs_to :parent_page, class_name: 'Page', foreign_key: :parent_page_id, optional: true
12
12
 
13
13
  def cms_path
@@ -1,50 +1,74 @@
1
1
  <div layout="row" layout-wrap>
2
- <aside flex="30">
3
- <md-list>
4
- <md-list-item class="md-2-line" ng-repeat="pageType in app.allPageTypes" ng-click="ptctrl.selectPageType(pageType)" ng-class="{selected: pageType.id == ptctrl.selectedPageType.id}">
5
- <div class="md-list-item-text" layout="column">
6
- <h3>{{ pageType.title }}</h3>
7
- <h4>{{ pageType.name }}</h4>
8
- </div>
9
- </md-list-item>
10
- </md-list>
11
- </aside>
12
- <form flex="70" ng-show="ptctrl.selectedPageType" ng-submit="ptctrl.savePageType(ptctrl.selectedPageType)">
13
- <md-toolbar>
14
- <div class="md-toolbar-tools">
15
- <h3>
16
- <span>{{ptctrl.selectedPageType.title}}</span>
17
- </h3>
18
- </div>
19
- </md-toolbar>
20
- <md-content>
21
- <md-input-container class="md-block">
22
- <label>ID: {{ptctrl.selectedPageType.id}}</label>
23
- </md-input-container>
24
- <md-input-container class="md-block">
25
- <label>Titel</label>
26
- <input type="text" ng-model="ptctrl.selectedPageType.title" />
27
- </md-input-container>
28
- <md-input-container class="md-block">
29
- <label>Name</label>
30
- <input type="text" ng-model="ptctrl.selectedPageType.name" />
31
- </md-input-container>
32
- </md-content>
33
- <h2>
34
- Zusätzliche Eigenschaften
35
- </h2>
36
- <md-input-container>
37
- <label>Mögliche zusätzliche Eigenschaft hinzufügen:</label>
38
- <md-select ng-model="ptctrl.attributeIdToAdd" ng-change="ptctrl.addAtributeToSelectedPageType()">
39
- <md-option ng-repeat="attribute in ptctrl.attributesAddableToSelectedPageType() track by $index" value="{{attribute.id}}">
40
- {{attribute.title}} ({{attribute.name}})
41
- </md-option>
42
- </md-select>
43
- </md-input-container>
44
- <ul>
45
- <li ng-repeat="attribute in ptctrl.selectedPageType.additional_attributes">
46
- {{attribute.title}} &nbsp; <span class="delete-link" ng-click="ptctrl.removeAttribute(attribute)">entfernen</span>
47
- </li>
48
- </ul>
49
- </form>
2
+ <md-tabs md-dynamic-height md-border-bottom md-selected="ptctrl.selectedTabIndex" layout="column" flex="100" style="display: flex">
3
+ <md-tab label="Alle Seitentypen">
4
+ <aside flex="30">
5
+ <md-list>
6
+ <md-list-item class="md-2-line" ng-repeat="pageType in app.allPageTypes" ng-click="ptctrl.selectPageType(pageType)" ng-class="{selected: pageType.id == ptctrl.selectedPageType.id}">
7
+ <div class="md-list-item-text" layout="column">
8
+ <h3>{{ pageType.title }}</h3>
9
+ <h4>{{ pageType.name }}</h4>
10
+ </div>
11
+ </md-list-item>
12
+ </md-list>
13
+ </aside>
14
+ <form flex="70" ng-show="ptctrl.selectedPageType" ng-submit="ptctrl.savePageType(ptctrl.selectedPageType)">
15
+ <md-toolbar>
16
+ <div class="md-toolbar-tools">
17
+ <h3>
18
+ <span>{{ptctrl.selectedPageType.title}}</span>
19
+ </h3>
20
+ </div>
21
+ </md-toolbar>
22
+ <md-content>
23
+ <md-input-container class="md-block">
24
+ <label>ID: {{ptctrl.selectedPageType.id}}</label>
25
+ </md-input-container>
26
+ <md-input-container class="md-block">
27
+ <label>Titel</label>
28
+ <input type="text" ng-model="ptctrl.selectedPageType.title" />
29
+ </md-input-container>
30
+ <md-input-container class="md-block">
31
+ <label>Name</label>
32
+ <input type="text" ng-model="ptctrl.selectedPageType.name" />
33
+ </md-input-container>
34
+ </md-content>
35
+ <h2>
36
+ Zusätzliche Eigenschaften
37
+ </h2>
38
+ <md-input-container>
39
+ <label>Mögliche zusätzliche Eigenschaft hinzufügen:</label>
40
+ <md-select ng-model="ptctrl.attributeIdToAdd" ng-change="ptctrl.addAtributeToSelectedPageType()">
41
+ <md-option ng-repeat="attribute in ptctrl.attributesAddableToSelectedPageType() track by $index" value="{{attribute.id}}">
42
+ {{attribute.title}} ({{attribute.name}})
43
+ </md-option>
44
+ </md-select>
45
+ </md-input-container>
46
+ <ul>
47
+ <li ng-repeat="attribute in ptctrl.selectedPageType.additional_attributes">
48
+ {{attribute.title}} &nbsp; <span class="delete-link" ng-click="ptctrl.removeAttribute(attribute)">entfernen</span>
49
+ </li>
50
+ </ul>
51
+ </form>
52
+ </md-tab>
53
+
54
+ <md-tab label="Seitentyp erstellen">
55
+ <aside flex="30"></aside>
56
+ <form flex="70" ng-submit="ptctrl.createPageType(ptctrl.newPageType)">
57
+ <div class="md-toolbar-tools"><h3>Neuer Seitentyp</h3></div>
58
+ <md-content>
59
+ <md-input-container class="md-block">
60
+ <label>Titel</label>
61
+ <input type="text" ng-model="ptctrl.newPageType.title" />
62
+ </md-input-container>
63
+ <md-input-container class="md-block">
64
+ <label>Name</label>
65
+ <input type="text" ng-model="ptctrl.newPageType.name" />
66
+ </md-input-container>
67
+ <md-input-container>
68
+ <input type="submit" value="speichern" aria-label="neuen Seitentypen speichern" />
69
+ </md-input-container>
70
+ </md-content>
71
+ </form>
72
+ </md-tab>
73
+ </md-tabs>
50
74
  </div>
@@ -1,3 +1,3 @@
1
1
  module BillyCms
2
- VERSION = "0.0.15"
2
+ VERSION = "0.0.17"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: billy_cms
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.15
4
+ version: 0.0.17
5
5
  platform: ruby
6
6
  authors:
7
7
  - unsdrei GbR
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2016-08-18 00:00:00.000000000 Z
11
+ date: 2016-12-11 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler