@europeana/portal
Version:
Europeana Portal
287 lines (225 loc) • 13 kB
JavaScript
exports.ids = [53];
exports.modules = {
/***/ 295:
/***/ (function(module, __webpack_exports__, __webpack_require__) {
;
/* harmony default export */ __webpack_exports__["a"] = ({
data() {
return {
contentfulExtensionSdk: null,
entry: null,
message: null
};
},
mounted() {
window.contentfulExtension.init(sdk => {
this.contentfulExtensionSdk = sdk;
if (sdk.location.is(window.contentfulExtension.locations.LOCATION_ENTRY_SIDEBAR)) {
sdk.window.startAutoResizer();
this.entry = sdk.entry;
}
});
},
methods: {
showError(error) {
this.contentfulExtensionSdk.dialogs.openAlert({
title: 'Error',
message: error
});
this.message = 'Failed';
}
}
});
/***/ }),
/***/ 323:
/***/ (function(module, exports, __webpack_require__) {
// style-loader: Adds some css to the DOM by adding a <style> tag
// load the styles
var content = __webpack_require__(402);
if(content.__esModule) content = content.default;
if(typeof content === 'string') content = [[module.i, content, '']];
if(content.locals) module.exports = content.locals;
// add CSS to SSR context
var add = __webpack_require__(13).default
module.exports.__inject__ = function (context) {
add("7b97da6f", content, true, context)
};
/***/ }),
/***/ 401:
/***/ (function(module, __webpack_exports__, __webpack_require__) {
;
__webpack_require__.r(__webpack_exports__);
/* harmony import */ var _node_modules_vue_style_loader_index_js_ref_7_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_7_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_sass_loader_dist_cjs_js_ref_7_oneOf_1_2_node_modules_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_style_index_0_id_e440ae6c_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(323);
/* harmony import */ var _node_modules_vue_style_loader_index_js_ref_7_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_7_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_sass_loader_dist_cjs_js_ref_7_oneOf_1_2_node_modules_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_style_index_0_id_e440ae6c_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_vue_style_loader_index_js_ref_7_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_7_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_sass_loader_dist_cjs_js_ref_7_oneOf_1_2_node_modules_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_style_index_0_id_e440ae6c_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0__);
/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _node_modules_vue_style_loader_index_js_ref_7_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_7_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_sass_loader_dist_cjs_js_ref_7_oneOf_1_2_node_modules_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_style_index_0_id_e440ae6c_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0__) if(["default"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _node_modules_vue_style_loader_index_js_ref_7_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_7_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_sass_loader_dist_cjs_js_ref_7_oneOf_1_2_node_modules_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_style_index_0_id_e440ae6c_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));
/***/ }),
/***/ 402:
/***/ (function(module, exports, __webpack_require__) {
// Imports
var ___CSS_LOADER_API_IMPORT___ = __webpack_require__(12);
var ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(false);
// Module
___CSS_LOADER_EXPORT___.push([module.i, ".contentful[data-v-e440ae6c]{font-size:11px}.contentful button[data-v-e440ae6c]{margin-right:1rem}", ""]);
// Exports
module.exports = ___CSS_LOADER_EXPORT___;
/***/ }),
/***/ 553:
/***/ (function(module, __webpack_exports__, __webpack_require__) {
;
// ESM COMPAT FLAG
__webpack_require__.r(__webpack_exports__);
// CONCATENATED MODULE: ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./src/pages/contentful/image-harvester/index.vue?vue&type=template&id=e440ae6c&scoped=true&
var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:"contentful"},[_c('b-form-group',[_c('b-button',{staticClass:"mb-2",on:{"click":_vm.harvestImage}},[_vm._v("\n Harvest\n ")])],1),_vm._ssrNode(" <p data-v-e440ae6c>"+_vm._ssrEscape(_vm._s(_vm.message))+"</p>")],2)}
var staticRenderFns = []
// CONCATENATED MODULE: ./src/pages/contentful/image-harvester/index.vue?vue&type=template&id=e440ae6c&scoped=true&
// EXTERNAL MODULE: ./src/mixins/contentful/sidebar.js
var sidebar = __webpack_require__(295);
// EXTERNAL MODULE: ./src/plugins/europeana/utils.js
var utils = __webpack_require__(2);
// EXTERNAL MODULE: ./src/plugins/europeana/record.js
var record = __webpack_require__(55);
// EXTERNAL MODULE: ./src/plugins/europeana/data.js
var data = __webpack_require__(10);
// CONCATENATED MODULE: ./node_modules/babel-loader/lib??ref--2-0!./node_modules/vue-loader/lib??vue-loader-options!./src/pages/contentful/image-harvester/index.vue?vue&type=script&lang=js&
//
//
//
//
//
//
//
//
//
//
//
//
//
//
/* harmony default export */ var image_harvestervue_type_script_lang_js_ = ({
name: 'ContentfulImageHarvesterPage',
mixins: [sidebar["a" /* default */]],
layout: 'contentful',
head() {
return {
title: this.$pageHeadTitle('Image harvester - Contentful app'),
bodyAttrs: {
class: '',
style: 'background: transparent;'
}
};
},
methods: {
async harvestImage() {
const itemUrl = await this.getUrlFromUser();
if (!itemUrl) {
return;
}
let id = Object(record["c" /* recordIdFromUrl */])(itemUrl);
if (!id) {
this.showError(`Unable to parse URL: ${itemUrl} Please make sure the URL conforms to the accepted formats.`);
return;
}
let itemResponse;
try {
itemResponse = await this.$apis.record.$axios.get(`${id}.json`);
} catch (error) {
this.showError(`Unable to harvest "${itemUrl}". Please make sure the item can be accessed on the Record API. Error: "${error.message}"`);
return;
}
try {
await this.populateFields(itemResponse.data.object);
this.message = 'Success';
} catch (error) {
this.showError(`There was a problem updating the entry. ${error.message}`);
}
},
async getUrlFromUser() {
return this.contentfulExtensionSdk.dialogs.openPrompt({
title: 'Harvest',
message: 'Enter an item page URL, or an item URI or ID.',
intent: 'positive'
});
},
localiseValue(value) {
return Object(utils["h" /* langMapValueForLocale */])(value, this.$i18n.locale).values[0] || null;
},
async populateFields(item) {
var _item$organizations, _edmIsShownByWebResou, _item$agents, _edmIsShownByWebResou2, _edmIsShownByWebResou3, _providerAggregation$, _this$entry$fields$na, _this$entry$fields$cr, _this$entry$fields$pr, _this$entry$fields$li, _this$entry$fields$ur;
const locale = this.$i18n.isoLocale();
const providerAggregation = item.aggregations.find(aggregation => aggregation.about.startsWith('/aggregation/provider/'));
const providerProxy = item.proxies.find(proxy => proxy.about.startsWith('/proxy/provider/'));
const edmIsShownBy = providerAggregation.edmIsShownBy;
const edmIsShownByWebResource = (providerAggregation.webResources || []).find(webResource => webResource.about === edmIsShownBy);
const edmDataProvider = providerAggregation.edmDataProvider;
const edmDataProviderOrganization = (_item$organizations = item.organizations) === null || _item$organizations === void 0 ? void 0 : _item$organizations.find(organization => {
var _edmDataProvider$def;
return organization.about === ((_edmDataProvider$def = edmDataProvider.def) === null || _edmDataProvider$def === void 0 ? void 0 : _edmDataProvider$def[0]);
});
if (!edmIsShownBy || !(edmIsShownByWebResource !== null && edmIsShownByWebResource !== void 0 && (_edmIsShownByWebResou = edmIsShownByWebResource.ebucoreHasMimeType) !== null && _edmIsShownByWebResou !== void 0 && _edmIsShownByWebResou.startsWith('image/'))) {
throw new Error('No edm:isShownBy image found.');
}
const name = this.localiseValue(providerProxy.dcTitle);
const dcCreator = (edmIsShownByWebResource === null || edmIsShownByWebResource === void 0 ? void 0 : edmIsShownByWebResource.dcCreator) || providerProxy.dcCreator;
const dcCreatorAgent = dcCreator ? (_item$agents = item.agents) === null || _item$agents === void 0 ? void 0 : _item$agents.find(agent => {
var _dcCreator$def;
return agent.about === ((_dcCreator$def = dcCreator.def) === null || _dcCreator$def === void 0 ? void 0 : _dcCreator$def[0]);
}) : undefined;
const creator = this.localiseValue((dcCreatorAgent === null || dcCreatorAgent === void 0 ? void 0 : dcCreatorAgent.prefLabel) || dcCreator);
const provider = this.localiseValue((edmDataProviderOrganization === null || edmDataProviderOrganization === void 0 ? void 0 : edmDataProviderOrganization.prefLabel) || edmDataProvider);
const license = (edmIsShownByWebResource === null || edmIsShownByWebResource === void 0 ? void 0 : (_edmIsShownByWebResou2 = edmIsShownByWebResource.webResourceEdmRights) === null || _edmIsShownByWebResou2 === void 0 ? void 0 : (_edmIsShownByWebResou3 = _edmIsShownByWebResou2.def) === null || _edmIsShownByWebResou3 === void 0 ? void 0 : _edmIsShownByWebResou3[0]) || ((_providerAggregation$ = providerAggregation.edmRights.def) === null || _providerAggregation$ === void 0 ? void 0 : _providerAggregation$[0]);
const url = `${data["a" /* BASE_URL */]}/item${item.about}`;
(_this$entry$fields$na = this.entry.fields.name) === null || _this$entry$fields$na === void 0 ? void 0 : _this$entry$fields$na.setValue(name, locale);
(_this$entry$fields$cr = this.entry.fields.creator) === null || _this$entry$fields$cr === void 0 ? void 0 : _this$entry$fields$cr.setValue(creator, locale);
(_this$entry$fields$pr = this.entry.fields.provider) === null || _this$entry$fields$pr === void 0 ? void 0 : _this$entry$fields$pr.setValue(provider, locale);
(_this$entry$fields$li = this.entry.fields.license) === null || _this$entry$fields$li === void 0 ? void 0 : _this$entry$fields$li.setValue(license);
(_this$entry$fields$ur = this.entry.fields.url) === null || _this$entry$fields$ur === void 0 ? void 0 : _this$entry$fields$ur.setValue(url);
await this.entry.fields.image.removeValue();
const asset = {
fields: {
title: {},
file: {}
}
};
asset.fields.title[locale] = name || item.about;
asset.fields.file[locale] = {
contentType: edmIsShownByWebResource.ebucoreHasMimeType,
fileName: asset.fields.title[locale],
upload: edmIsShownBy
};
const rawAsset = await this.contentfulExtensionSdk.space.createAsset(asset);
await this.contentfulExtensionSdk.space.processAsset(rawAsset, locale);
const processedAsset = await this.contentfulExtensionSdk.space.waitUntilAssetProcessed(rawAsset.sys.id, locale);
const publishedAsset = await this.contentfulExtensionSdk.space.publishAsset(processedAsset);
await this.entry.fields.image.setValue({
sys: {
type: 'Link',
linkType: 'Asset',
id: publishedAsset.sys.id
}
});
}
}
});
// CONCATENATED MODULE: ./src/pages/contentful/image-harvester/index.vue?vue&type=script&lang=js&
/* harmony default export */ var contentful_image_harvestervue_type_script_lang_js_ = (image_harvestervue_type_script_lang_js_);
// EXTERNAL MODULE: ./node_modules/vue-loader/lib/runtime/componentNormalizer.js
var componentNormalizer = __webpack_require__(3);
// CONCATENATED MODULE: ./src/pages/contentful/image-harvester/index.vue
function injectStyles (context) {
var style0 = __webpack_require__(401)
if (style0.__inject__) style0.__inject__(context)
}
/* normalize component */
var component = Object(componentNormalizer["a" /* default */])(
contentful_image_harvestervue_type_script_lang_js_,
render,
staticRenderFns,
false,
injectStyles,
"e440ae6c",
"fef260d2"
)
/* harmony default export */ var image_harvester = __webpack_exports__["default"] = (component.exports);
/***/ })
};;
//# sourceMappingURL=index.js.map