@europeana/portal
Version:
Europeana Portal
327 lines (251 loc) • 12 kB
JavaScript
exports.ids = [51];
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';
}
}
});
/***/ }),
/***/ 321:
/***/ (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__(398);
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("6461e975", content, true, context)
};
/***/ }),
/***/ 397:
/***/ (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_34e7e990_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(321);
/* 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_34e7e990_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_34e7e990_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_34e7e990_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_34e7e990_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));
/***/ }),
/***/ 398:
/***/ (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-34e7e990]{font-size:11px}.contentful button[data-v-34e7e990]{margin-right:1rem}", ""]);
// Exports
module.exports = ___CSS_LOADER_EXPORT___;
/***/ }),
/***/ 551:
/***/ (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/entity-harvester/index.vue?vue&type=template&id=34e7e990&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.harvestEntity}},[_vm._v("\n Harvest\n ")])],1),_vm._ssrNode(" <p data-v-34e7e990>"+_vm._ssrEscape(_vm._s(_vm.message))+"</p> <div class=\"cf-form-hint\" data-v-34e7e990>\n Examples:\n <ul style=\"margin-top: 0;\\n padding-left: 1.25rem;\" data-v-34e7e990><li data-v-34e7e990>http://data.europeana.eu/agent/59832</li> <li data-v-34e7e990>https://api.europeana.eu/entity/timespan/20</li> <li data-v-34e7e990>https://www.europeana.eu/en/collections/person/60404-johannes-vermeer</li> <li data-v-34e7e990>https://portaljs-test.eanadev.org/collections/topic/190</li></ul></div>")],2)}
var staticRenderFns = []
// CONCATENATED MODULE: ./src/pages/contentful/entity-harvester/index.vue?vue&type=template&id=34e7e990&scoped=true&
// EXTERNAL MODULE: ./src/plugins/europeana/entity.js
var entity = __webpack_require__(52);
// 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/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/entity-harvester/index.vue?vue&type=script&lang=js&
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
/* harmony default export */ var entity_harvestervue_type_script_lang_js_ = ({
name: 'ContentfulEntityHarvesterPage',
mixins: [sidebar["a" /* default */]],
layout: 'contentful',
data() {
return {
contentfulExtensionSdk: null,
entry: null,
message: null
};
},
head() {
return {
title: this.$pageHeadTitle('Entity harvester - Contentful app'),
bodyAttrs: {
class: '',
style: 'background: transparent;'
}
};
},
methods: {
async harvestEntity() {
const entityUrl = await this.getUrlFromUser();
if (!entityUrl) {
return;
}
let type, id;
try {
({
type,
id
} = this.entityParamsFromUrl(entityUrl));
} catch (error) {
this.showError(`Unable to parse URL: ${entityUrl} Please make sure the URL conforms to the accepted formats.`);
return;
}
let entityResponse;
try {
entityResponse = await this.$apis.entity.get(type, id);
} catch (error) {
this.showError(`Unable to harvest: ${entityUrl} Please make sure the entity can be accessed on the entity API. ${error.message}`);
return;
}
try {
this.populateFields(entityResponse.entity, id);
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 a Europeana.eu entity/collection page URL, or an entity URI',
intent: 'positive'
});
},
entityParamsFromUrl(url) {
url = url.replace(new RegExp('^https?://api.europeana.eu/entity'), data["a" /* BASE_URL */]);
if (Object(entity["h" /* isEntityUri */])(url)) {
return Object(entity["b" /* entityParamsFromUri */])(url);
}
const pageMatch = url.match(new RegExp('^https?://[^/]+(/[a-z]{2})?/collections/(person|topic|time)/([0-9]+)+'));
if (pageMatch) {
const type = pageMatch[2];
const id = pageMatch[3];
return {
type,
id
};
}
throw new Error();
},
// TODO: set up a configurable map for other fields to avoid hard-coding them here
populateFields(response, id) {
var _this$entry$fields$sl, _this$entry$fields$ty, _this$entry$fields$na, _this$entry$fields$de;
const enPrefLabel = Object(utils["h" /* langMapValueForLocale */])(response.prefLabel, 'en', {
omitAllUris: true
}).values[0]; // set field values
this.entry.fields.identifier.setValue(response.id); // data.europeana.eu URI
(_this$entry$fields$sl = this.entry.fields.slug) === null || _this$entry$fields$sl === void 0 ? void 0 : _this$entry$fields$sl.setValue(Object(utils["f" /* getLabelledSlug */])(id, enPrefLabel)); // slug
(_this$entry$fields$ty = this.entry.fields.type) === null || _this$entry$fields$ty === void 0 ? void 0 : _this$entry$fields$ty.setValue(Object(entity["e" /* getEntityTypeHumanReadable */])(response.type)); // entity type
// set name field from `prefLabel`
(_this$entry$fields$na = this.entry.fields.name) === null || _this$entry$fields$na === void 0 ? void 0 : _this$entry$fields$na.setValue(enPrefLabel); // set description from different fields based on entity type
(_this$entry$fields$de = this.entry.fields.description) === null || _this$entry$fields$de === void 0 ? void 0 : _this$entry$fields$de.setValue(this.entityDescriptionFromResponse(response)); // set image field from `isShownBy`
if (this.entry.fields.image) {
this.entry.fields.image.removeValue();
if (response.isShownBy) {
this.entry.fields.image.setValue(response.isShownBy.thumbnail);
}
}
},
entityDescriptionFromResponse(response) {
let description = '';
switch (response.type) {
case 'Agent':
// use `biographicalInformation`
// NB: this is in JSON-LD expanded form
description = Object(utils["h" /* langMapValueForLocale */])(response.biographicalInformation, 'en').values[0];
break;
case 'Concept':
case 'Place':
// use `note`
// NB: language map with each value being an array of literals
description = Object(utils["h" /* langMapValueForLocale */])(response.note, 'en').values[0];
break;
case 'Organization':
// use `description`
// NB: language map with each value being a single literal
description = Object(utils["h" /* langMapValueForLocale */])(response.description, 'en').values[0];
break;
case 'Timespan':
// TODO: use what? `${response.begin} to ${response.end}`?
break;
}
return description;
}
}
});
// CONCATENATED MODULE: ./src/pages/contentful/entity-harvester/index.vue?vue&type=script&lang=js&
/* harmony default export */ var contentful_entity_harvestervue_type_script_lang_js_ = (entity_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/entity-harvester/index.vue
function injectStyles (context) {
var style0 = __webpack_require__(397)
if (style0.__inject__) style0.__inject__(context)
}
/* normalize component */
var component = Object(componentNormalizer["a" /* default */])(
contentful_entity_harvestervue_type_script_lang_js_,
render,
staticRenderFns,
false,
injectStyles,
"34e7e990",
"1da92def"
)
/* harmony default export */ var entity_harvester = __webpack_exports__["default"] = (component.exports);
/***/ })
};;
//# sourceMappingURL=index.js.map