<button dojoType="dijit.form.Button" onClick="aba_grid.deleteSelected()">[% l('Delete Selected') %]</button>
</div>
</div>
- <div>
<table jsId="aba_grid"
dojoType="openils.widget.AutoGrid"
autoHeight="true"
fmClass="aba"
editOnEnter="true">
</table>
- </div>
</div>
<script type="text/javascript">
dojo.require("openils.widget.AutoGrid");
[% l('Showing only browse axis-authority field maps linked to authority field:') %]
<a id="authority-field-metadata"></a>
</div>
- <div>
<table jsId="abaafm_grid"
dojoType="openils.widget.AutoGrid"
autoHeight="true"
fmClass="abaafm"
editOnEnter="true">
</table>
- </div>
</div>
<script type="text/javascript"
src="[% ctx.media_prefix %]/js/ui/default/conify/global/cat/authority/common.js"></script>
<button dojoType="dijit.form.Button" onClick="acs_grid.deleteSelected()">[% l('Delete Selected') %]</button>
</div>
</div>
- <div>
<table jsId="acs_grid"
dojoType="openils.widget.AutoGrid"
autoHeight="true"
[% l('Showing only authority fields linked to control set:') %]
<a id="control-set-metadata"></a>
</div>
- <div>
<table jsId="acsaf_grid"
dojoType="openils.widget.AutoGrid"
autoHeight="true"
</tr>
</thead>
</table>
- </div>
</div>
<script type="text/javascript"
src="[% ctx.media_prefix %]/js/ui/default/conify/global/cat/authority/common.js"></script>
[% l('Showing only control set bib fields linked to authority field:') %]
<a id="authority-field-metadata"></a>
</div>
- <div>
<table jsId="acsbf_grid"
dojoType="openils.widget.AutoGrid"
autoHeight="true"
fmClass="acsbf"
editOnEnter="true">
</table>
- </div>
</div>
<script type="text/javascript"
src="[% ctx.media_prefix %]/js/ui/default/conify/global/cat/authority/common.js"></script>
[% l('Showing only thesauri linked to control set:') %]
<a id="control-set-metadata"></a>
</div>
- <div>
<table jsId="at_grid"
dojoType="openils.widget.AutoGrid"
autoHeight="true"
</tr>
</thead>
</table>
- </div>
</div>
<script type="text/javascript"
src="[% ctx.media_prefix %]/js/ui/default/conify/global/cat/authority/common.js"></script>
<button dojoType='dijit.form.Button' onClick='actorSipFieldsGrid.deleteSelected()'>[% l('Delete Selected') %]</button>
</div>
</div>
- <div>
<table jsId="actorSipFieldsGrid"
dojoType="openils.widget.AutoGrid"
fieldOrder="['field', 'name', 'one_only']"
<button dojoType='dijit.form.Button' onClick='assetSipFieldsGrid.deleteSelected()'>[% l('Delete Selected') %]</button>
</div>
</div>
- <div>
<table jsId="assetSipFieldsGrid"
dojoType="openils.widget.AutoGrid"
fieldOrder="['field', 'name', 'one_only']"
<div>[% l('Global Flags') %]</div>
<div></div>
</div>
- <div>
<table jsId="gfGrid"
dojoType="openils.widget.AutoGrid"
fieldOrder="['name', 'label', 'enabled', 'value']"
<button dojoType='dijit.form.Button' onClick='ruleCircDurationGrid.deleteSelected()'>[% l('Delete Selected') %]</button>
</div>
</div>
- <div>
<table jsId="ruleCircDurationGrid"
dojoType="openils.widget.AutoGrid"
fieldOrder="['name', 'max_renewals', 'shrt', 'normal', 'extended']"
<script src="[% ctx.media_prefix %]/js/ui/default/staff/build/js/angular-cookies.min.js"></script>
<script src="[% ctx.media_prefix %]/js/ui/default/staff/build/js/ngToast.min.js"></script>
<script src="[% ctx.media_prefix %]/js/ui/default/staff/build/js/angular-tree-control.js"></script>
+<script src="[% ctx.media_prefix %]/js/ui/default/staff/build/js/iframeResizer.min.js"></script>
<!-- IDL / opensrf (network) -->
<script src="[% ctx.media_prefix %]/js/dojo/opensrf/JSON_v1.js"></script>
-<eg-embed-frame save-space="150" url="rurl"></eg-embed-frame>
+<eg-embed-frame autoresize save-space="150" url="rurl"></eg-embed-frame>
<div class="eg-embed-frame">
+ <button type="button" class="btn btn-default btn-xs" ng-show="allowEscape && showIframe" ng-click="escapeEmbed()">[% l('Open in New Window') %]</button>
+ <button type="button" class="btn btn-default btn-xs" ng-show="allowEscape && !showIframe" ng-click="restoreEmbed()">[% l('Re-embed') %]</button>
<!-- height is calculated at render time -->
<iframe
- src="{{url}}"
- style="height:{{height}}px">
+ ng-if="showIframe"
+ ng-attr-style="{{ autoresize ? undefined : 'height:' + height + 'px' }}"
+ src="{{url}}">
</iframe>
</div>
'bower_components/ngtoast/dist/ngToast.min.js',
'bower_components/jquery/dist/jquery.min.js',
'bower_components/angular-cookies/angular-cookies.min.js',
- 'bower_components/angular-cookies/angular-cookies.min.js.map'
+ 'bower_components/angular-cookies/angular-cookies.min.js.map',
+ 'bower_components/iframe-resizer/js/iframeResizer.min.js',
+ 'bower_components/iframe-resizer/js/iframeResizer.map',
+ 'bower_components/iframe-resizer/js/iframeResizer.contentWindow.min.js'
]
}]
},
var resolver = {delay : function(egStartup) {return egStartup.go()}};
var eframe_template =
- '<eg-embed-frame url="local_admin_url" handlers="funcs"></eg-embed-frame>';
+ '<eg-embed-frame allow-escape="true" min-height="min_height" url="local_admin_url" handlers="funcs"></eg-embed-frame>';
// non-conify routes come first
$routeProvider.when('/admin/local/money/cash_reports', {
var conify_path = '/eg/conify/global/' +
$routeParams.schema + '/' + $routeParams.page;
+ $scope.min_height = 800;
+
// embed URL must include protocol/domain or it will be loaded via
// push-state, resulting in an infinitely nested pages.
$scope.local_admin_url =
var resolver = {delay : function(egStartup) {return egStartup.go()}};
var eframe_template =
- '<eg-embed-frame url="server_admin_url" handlers="funcs"></eg-embed-frame>';
+ '<eg-embed-frame allow-escape="true" min-height="min_height" url="server_admin_url" handlers="funcs"></eg-embed-frame>';
// old-style Confiy
$routeProvider.when('/admin/server/legacy/:schema/:page', {
(angular.isDefined($routeParams.module) ? ($routeParams.module + '/') : '') +
$routeParams.schema + '/' + $routeParams.page;
+ $scope.min_height = 800;
+
// embed URL must include protocol/domain or it will be loaded via
// push-state, resulting in an infinitely nested pages.
$scope.server_admin_url =
"angular-cookies": "^1.5.8"
},
"resolutions": {
- "angular": "~1.5.5"
+ "angular": "~1.5.5",
+ "iframe-resizer": "^3.5.5"
}
}
// called after onload of each new iframe page
onchange : '=?',
+
+ // for tweaking height
saveSpace : '@',
+ minHeight : '=?',
+
+ // to display button for displaying embedded page
+ // in a new tab
+ allowEscape : '=?'
},
templateUrl : './share/t_eframe',
link: function (scope, element, attrs) {
+ scope.autoresize = 'autoresize' in attrs;
+ scope.showIframe = true;
element.find('iframe').on(
'load',
function() {scope.egEmbedFrameLoader(this)}
// Set the initial iframe height to just under the window height.
// leave room for the navbar, padding, margins, etc.
$scope.height = $window.outerHeight - $scope.save_space;
+ if ($scope.minHeight && $scope.height < $scope.minHeight) {
+ $scope.height = $scope.minHeight;
+ }
// browser client doesn't use cookies, so we don't load the
// (at the time of writing, quite limited) angular.cookies
$scope.frame = {dom:iframe};
$scope.iframe = iframe;
- // Reset the iframe height to the final content height.
- if ($scope.height < $scope.iframe.contentWindow.document.body.scrollHeight)
- $scope.height = $scope.iframe.contentWindow.document.body.scrollHeight;
+ if ($scope.autoresize) {
+ iFrameResize({}, $scope.iframe);
+ } else {
+ // Reset the iframe height to the final content height.
+ if ($scope.height < $scope.iframe.contentWindow.document.body.scrollHeight)
+ $scope.height = $scope.iframe.contentWindow.document.body.scrollHeight;
+ }
var page = $scope.iframe.contentWindow.location.href;
console.debug('egEmbedFrameLoader(): ' + page);
$scope.iframe.contentWindow.location);
}
+ $scope.style = function() {
+ return 'height:' + $scope.height + 'px';
+ }
+
// tell the iframe'd window its inside the staff client
$scope.iframe.contentWindow.IAMXUL = true;
// Adjust the height again if the iframe loads the openils.Util Dojo module
$timeout(function () {
+ if ($scope.autoresize) return; // let iframe-resizer handle it
if ($scope.iframe.contentWindow.openils && $scope.iframe.contentWindow.openils.Util) {
// HACK! for patron reg page
if ($scope.onchange) $scope.onchange(page);
}
+
+ // open a new tab with the embedded URL
+ $scope.escapeEmbed = function() {
+ $scope.showIframe = false;
+ $window.open($scope.url, '_blank').focus();
+ }
+ $scope.restoreEmbed = function() {
+ $scope.showIframe = true;
+ }
}]
}
})
parseOnLoad: true
}
</script>
+<script type="text/javascript" src="/js/ui/default/staff/build/js/iframeResizer.contentWindow.min.js"></script>
<script type="text/javascript" src="/js/dojo/dojo/dojo.js"></script>
<script type="text/javascript">
dojo.require('dojo.parser');