billy_cms 0.0.15 → 0.0.17

Sign up to get free protection for your applications and to get access to all the features.
@@ -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