Skip to content
This repository was archived by the owner on Aug 6, 2018. It is now read-only.

Commit d6ad69c

Browse files
committed
Fix non-initialized angular app when adding matrix field
Rewrite how anguilar app initialization occurs, making it more robust, more crafty and smaller
1 parent 0f490f4 commit d6ad69c

File tree

5 files changed

+25
-36
lines changed

5 files changed

+25
-36
lines changed

fieldtypes/Mediaflow_MediaFieldType.php

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,12 +10,11 @@ public function getName()
1010

1111
public function getInputHtml($name, $value)
1212
{
13-
$id = craft()->templates->formatInputId($name);
14-
$class = get_class($this->element);
15-
$inMatrix = $class === 'Craft\Mediaflow_MediaFieldType';
13+
$id = craft()->templates->namespaceInputId($name);
14+
$js = "angular.bootstrap(document.querySelector('#{$id}-field .mediaflow-app'), ['mediaflow']);";
15+
craft()->templates->includeJs($js);
1616
$emptyDefaults = array('id' => null);
1717
return craft()->templates->render('mediaflow/input', array(
18-
'inMatrix' => $inMatrix,
1918
'id' => $id,
2019
'name' => $name,
2120
'value' => $value ? $value->getAttributes() : $emptyDefaults,

resources/bootstrap.js

Lines changed: 0 additions & 10 deletions
This file was deleted.

resources/mediaflow-ng.js

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,4 @@
11
var mediaflow = angular.module('mediaflow', ['angularFileUpload']);
2-
mediaflow.config(function ($interpolateProvider) {
3-
$interpolateProvider.startSymbol('[[').endSymbol(']]');
4-
});
52

63
mediaflow.filter('sizeConverter', function () {
74
return function (size, precision) {

templates/index.html

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,8 @@
3333
{% endset %}
3434

3535
{% set content %}
36+
37+
{% raw %}
3638
<div ng-app="mediaflow" ng-controller="MediaFlowCtrl">
3739
<div ng-hide="connection" class="error ng-cloak">Failed to connect to Mediaflow using current settings</div>
3840
<div class="elementindex" ng-show="connection" ng-controller="MediaFlowBrowseCtrl">
@@ -74,12 +76,12 @@
7476
<tr ng-repeat="medium in media|filter:searchText">
7577
<td scope="row">
7678
<div class="element hasthumb">
77-
<img ng-show="medium.isImage" class="elementthumb elementthumb4" ng-src="[[medium.thumb]]" />
78-
<div class="label"><span class="title">[[medium.name]]</span>
79+
<img ng-show="medium.isImage" class="elementthumb elementthumb4" ng-src="{{medium.thumb}}" />
80+
<div class="label"><span class="title">{{medium.name}}</span>
7981
</div>
8082
</div>
8183
</td>
82-
<td data-title="Size">[[medium.file.size|sizeConverter]]</td>
84+
<td data-title="Size">{{medium.file.size|sizeConverter}}</td>
8385
</tr>
8486
</tbody>
8587
</table>
@@ -90,8 +92,8 @@
9092
<ul class="thumbsview">
9193
<li ng-repeat="medium in media|filter:searchText">
9294
<div class="element hasthumb">
93-
<img ng-show="medium.isImage" class="elementthumb elementthumb4" ng-src="[[medium.thumb]]" />
94-
<div class="label"><span class="title">[[medium.name]]</span>
95+
<img ng-show="medium.isImage" class="elementthumb elementthumb4" ng-src="{{medium.thumb}}" />
96+
<div class="label"><span class="title">{{medium.name}}</span>
9597
</div>
9698
</div>
9799
</li>
@@ -101,6 +103,9 @@
101103
</div>
102104
</div>
103105
</div>
106+
107+
{% endraw %}
108+
104109
{% includeJsResource "mediaflow/angularjs-file-upload.js" %}
105110
{% includeJsResource "mediaflow/mediaflow-ng.js" %}
106111
{% includeCssResource "mediaflow/style.css" %}

templates/input.html

Lines changed: 12 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -3,31 +3,32 @@
33
Failed to connect to Mediaflow using current settings
44
</div>
55
<div ng-show="connection" ng-controller="MediaFlowFieldCtrl">
6+
{% raw %}
67
<div class="mediaflow-preview clearafter" ng-show="selected.id">
78
<div class="thumb">
8-
<img ng-src="[[selected.thumb]]">
9+
<img ng-src="{{selected.thumb}}">
910
</div>
1011
<table class="mediaflow-meta">
1112
<tbody>
1213
<tr>
1314
<th>Name</th>
14-
<td>[[selected.name]]</td>
15+
<td>{{selected.name}}</td>
1516
</tr>
1617
<tr>
1718
<th>Width</th>
18-
<td>[[selected.file.width]]</td>
19+
<td>{{selected.file.width}}</td>
1920
</tr>
2021
<tr>
2122
<th>Height</th>
22-
<td>[[selected.file.height]]</td>
23+
<td>{{selected.file.height}}</td>
2324
</tr>
2425
<tr ng-show="selected.uploaded">
2526
<th>Uploaded</th>
26-
<td>[[selected.uploaded|date:'short']]</td>
27+
<td>{{selected.uploaded|date:'short'}}</td>
2728
</tr>
2829
<tr>
2930
<th>Size</th>
30-
<td>[[selected.file.size|sizeConverter]]</td>
31+
<td>{{selected.file.size|sizeConverter}}</td>
3132
</tr>
3233
</tbody>
3334
</table>
@@ -68,24 +69,21 @@
6869
<ul>
6970
<li ng-repeat="medium in media">
7071
<img ng-show="medium.isImage"
71-
ng-src="[[medium.thumb]]"
72+
ng-src="{{medium.thumb}}"
7273
ng-click="select(medium)"
7374
>
7475
</li>
7576
</ul>
7677
</div>
7778
</div>
79+
{% endraw %}
7880
<div ng-init="selected={{value|json_encode()}}"></div>
79-
<input type="hidden" value="[[selected|json]]" name="{{name}}" />
81+
<input type="hidden"
82+
{% raw %}value="{{selected|json}}"{% endraw %}
83+
name="{{name}}" />
8084
</div>
8185
</div>
8286
{% includeJsResource "mediaflow/angular.min.js" %}
8387
{% includeJsResource "mediaflow/angularjs-file-upload.js" %}
8488
{% includeJsResource "mediaflow/mediaflow-ng.js" %}
85-
{% includeJsResource "mediaflow/bootstrap.js" %}
8689
{% includeCssResource "mediaflow/style.css" %}
87-
{% if inMatrix %}
88-
<script>
89-
mediaflowBootstrap();
90-
</script>
91-
{% endif %}

0 commit comments

Comments
 (0)