234
QJsonArray declarations_a = departments_o["declarations"].toArray();
235
for (const auto item_ : declarations_a)
160
QJsonArray declarations_a = departments_o[QStringLiteral("declarations")].toArray();
161
for (const auto & item_ : declarations_a)
238
std::shared_ptr<dept> dept_ = std::make_shared<dept>(d_);
163
auto dept_ptr = std::make_shared<dept>();
239
164
QJsonObject dept_o = item_.toObject();
240
dept_->id = dept_o["id"].toString().toStdString();
241
dept_->title = _(dept_o["_title"].toString().toStdString().c_str());
242
if (dept_o.contains("root"))
165
dept_ptr->id = dept_o[QStringLiteral("id")].toString().toStdString();
166
dept_ptr->title = _(dept_o[QStringLiteral("_title")].toString().toStdString().c_str());
167
if (dept_o.contains(QStringLiteral("root")))
244
if (dept_o["root"].toString() == "true")
169
if (dept_o[QStringLiteral("root")].toString() == TRUE)
247
dept_id_of_root = dept_->id;
171
dept_ptr->root = true;
172
dept_id_of_root = dept_ptr->id;
250
depts[dept_->id] = dept_;
175
depts[dept_ptr->id] = dept_ptr;
254
QJsonArray order_a = doc_o["order"].toArray();
179
QJsonArray order_a = root[QStringLiteral("order")].toArray();
256
for (const auto item_o_ : order_a)
181
for (const auto & item_o_ : order_a)
258
183
QJsonObject item_o = item_o_.toObject();
260
if (item_o.contains("category"))
185
if (item_o.contains(QStringLiteral("category")))
262
QJsonObject cat_o = item_o["category"].toObject();
264
std::shared_ptr<category> cat = std::make_shared<category>(cat_);
265
cat->id = cat_o["id"].toString().toStdString();
267
cat->title = cat_o["_title"].toString().toStdString();
268
cat->dept_id = cat_o["department"].toString().toStdString();
270
categoryId_titleMsgid[cat->id] = cat->title;
271
categoryIds.emplace_back(cat->id);
273
if (cat_o.contains("link_to_child_specified"))
187
QJsonObject cat_o = item_o[QStringLiteral("category")].toObject();
188
std::shared_ptr<category> cat_ptr = std::make_shared<category>();
189
cat_ptr->id = cat_o[QStringLiteral("id")].toString().toStdString();
191
cat_ptr->title = cat_o[QStringLiteral("_title")].toString().toStdString();
192
cat_ptr->dept_id = cat_o[QStringLiteral("department")].toString().toStdString();
194
categoryId_titleMsgid[cat_ptr->id] = cat_ptr->title;
195
categoryIds.emplace_back(cat_ptr->id);
197
if (cat_o.contains(QStringLiteral("link_to_child_specified")))
275
categoryId_linkToChildSpecified[cat->id] = cat_o["link_to_child_specified"].toString().toStdString();
199
categoryId_linkToChildSpecified[cat_ptr->id] = cat_o[QStringLiteral("link_to_child_specified")].toString().toStdString();
277
int card = get_setting_cardinality();
201
int card = get_cardinality_setting();
280
cat->cardinality = card;
204
cat_ptr->cardinality = card;
282
206
// but let declaration for category override user settings
283
if (cat_o.contains("cardinality"))
207
if (cat_o.contains(QStringLiteral("cardinality")))
285
int cardinality_ = cat_o["cardinality"].toInt();
286
if (cardinality_ > -1 )
209
int cardinality_ = cat_o[QStringLiteral("cardinality")].toInt();
210
if (cardinality_ > -1)
288
cat->cardinality = cardinality_;
212
cat_ptr->cardinality = cardinality_;
291
qDebug() << "=== CAT UTILs. id: " << qstr(cat->id) << " cardinality: " << QString::number(cat->cardinality);
215
qDebug() << "=== CAT UTILs. id: " << qstr(cat_ptr->id) << " cardinality: " << QString::number(cat_ptr->cardinality);
293
if (cat_o.contains("first_result_renderer_common_id"))
217
if (cat_o.contains(QStringLiteral("first_result_renderer_common_id")))
295
std::string id = cat_o["first_result_renderer_common_id"].toString().toStdString();
296
categoryId_first_result_renderers[cat->id] = common_templates[id];
297
categoryId_firstRdrs_catId2commonId[cat->id] = id;
219
std::string id = cat_o[QStringLiteral("first_result_renderer_common_id")].toString().toStdString();
220
categoryId_first_result_renderers[cat_ptr->id] = common_templates[id];
221
categoryId_firstRdrs_catId2commonId[cat_ptr->id] = id;
299
else if (cat_o.contains("first_result_renderer"))
223
else if (cat_o.contains(QStringLiteral("first_result_renderer")))
301
QJsonObject template_o = cat_o["first_result_renderer"].toObject();
225
QJsonObject template_o = cat_o[QStringLiteral("first_result_renderer")].toObject();
302
226
QJsonDocument t_d(template_o);
303
categoryId_first_result_renderers[cat->id] = sstr(t_d.toJson());
227
categoryId_first_result_renderers[cat_ptr->id] = sstr(t_d.toJson());
305
else if (cat_o.contains("first_result_template"))
229
else if (cat_o.contains(QStringLiteral("first_result_template")))
307
231
//support deprecated for backwards compatibiliity
308
qWarning () << QString("%1: DEPRECATED use of 'first_result_template'. Switch to 'first_result_renderer'").arg(qstr(scope_id));
309
QJsonObject template_o = cat_o["first_result_template"].toObject();
232
qWarning () << QString("%1: DEPRECATED use of 'first_result_template'. Switch to 'first_result_renderer'")
233
.arg(qstr(agg_scope_->scope_id()));
234
QJsonObject template_o = cat_o[QStringLiteral("first_result_template")].toObject();
310
235
QJsonDocument t_d(template_o);
311
categoryId_first_result_renderers[cat->id] = sstr(t_d.toJson());
236
categoryId_first_result_renderers[cat_ptr->id] = sstr(t_d.toJson());
314
if (cat_o.contains("renderer_common_id"))
239
if (cat_o.contains(QStringLiteral("renderer_common_id")))
316
std::string id = cat_o["renderer_common_id"].toString().toStdString();
317
cat->renderer = common_templates[id];
318
categoryId_surfaceRdrs_catId2commonId[cat->id] = id;
241
std::string id = cat_o[QStringLiteral("renderer_common_id")].toString().toStdString();
242
cat_ptr->renderer = common_templates[id];
243
categoryId_surfaceRdrs_catId2commonId[cat_ptr->id] = id;
320
else if (cat_o.contains("renderer"))
245
else if (cat_o.contains(QStringLiteral("renderer")))
322
QJsonObject renderer_o = cat_o["renderer"].toObject();
247
QJsonObject renderer_o = cat_o[QStringLiteral("renderer")].toObject();
323
248
QJsonDocument st_d(renderer_o);
324
cat->renderer = sstr(st_d.toJson());
249
cat_ptr->renderer = sstr(st_d.toJson());
327
if (cat_o.contains("search_renderer_common_id"))
252
if (cat_o.contains(QStringLiteral("search_renderer_common_id")))
329
254
qDebug() << "==== UTILs. load. CATRES. search_renderer_common_id";
330
std::string id = cat_o["search_renderer_common_id"].toString().toStdString();
331
cat->search_renderer = common_templates[id];
255
std::string id = cat_o[QStringLiteral("search_renderer_common_id")].toString().toStdString();
256
cat_ptr->search_renderer = common_templates[id];
333
else if (cat_o.contains("search_renderer"))
258
else if (cat_o.contains(QStringLiteral("search_renderer")))
335
260
qDebug() << "==== UTILs. load. CATRES. search_renderer";
336
QJsonObject renderer_o = cat_o["search_renderer"].toObject();
261
QJsonObject renderer_o = cat_o[QStringLiteral("search_renderer")].toObject();
337
262
QJsonDocument st_d(renderer_o);
338
cat->search_renderer = sstr(st_d.toJson());
263
cat_ptr->search_renderer = sstr(st_d.toJson());
341
if (cat_o.contains("scopes"))
266
if (cat_o.contains(QStringLiteral("scopes")))
343
QJsonArray scope_a = cat_o["scopes"].toArray();
268
QJsonArray scope_a = cat_o[QStringLiteral("scopes")].toArray();
345
270
for (const auto item : scope_a)
347
272
QJsonObject scope_o = item.toObject();
348
std::string id = scope_o["id"].toString().toStdString();
349
std::string local_id = scope_o["local_id"].toString().toStdString();
273
std::string id = scope_o[QStringLiteral("id")].toString().toStdString();
274
std::string local_id = scope_o[QStringLiteral("local_id")].toString().toStdString();
351
276
//TODO doc that a child_department may include LANGCODE for replacement
352
277
//from locale lang code, and COUNTRYCODE with locale country code
353
if (scope_o.contains("child_department"))
278
if (scope_o.contains(QStringLiteral("child_department")))
355
QString child_dept = scope_o["child_department"].toString();
356
if (lang.size() == 2)
358
if (child_dept.contains("LANGCODE"))
359
child_dept = child_dept.replace("LANGCODE", lang);
360
scopeLocalId_childDept_m[local_id] = child_dept.toStdString();
362
if (country.size() == 2)
280
QString child_dept = scope_o[QStringLiteral("child_department")].toString();
365
if (child_dept.contains("COUNTRYCODE"))
366
child_dept = child_dept.replace("COUNTRYCODE", country);
367
scopeLocalId_childDept_m[local_id] = child_dept.toStdString();
369
qDebug() << qstr("=== CHDEPT. lang: %1 local %2. dept %3").arg(lang, qstr(local_id), qstr(scopeLocalId_childDept_m[local_id]));
282
if (agg_scope_->lang().size() == 2 && child_dept.contains(QStringLiteral("LANGCODE")))
284
child_dept = child_dept.replace(QStringLiteral("LANGCODE"), qstr(agg_scope_->lang()));
285
scopeLocalId_childDept_m[local_id] = child_dept.toStdString();
287
if (agg_scope_->country().size() == 2 && child_dept.contains(QStringLiteral("COUNTRYCODE")))
289
child_dept = child_dept.replace(QStringLiteral("COUNTRYCODE"), qstr(agg_scope_->country()));
290
scopeLocalId_childDept_m[local_id] = child_dept.toStdString();
292
qDebug() << qstr("=== CHDEPT. lang: %1 local %2. dept %3").arg(qstr(agg_scope_->lang()),
293
qstr(local_id), qstr(scopeLocalId_childDept_m[local_id]));
371
if (scope_o.contains("default_query_string"))
295
if (scope_o.contains(QStringLiteral("default_query_string")))
374
std::string default_qry_str = scope_o["default_query_string"].toString().toStdString();
298
std::string default_qry_str = scope_o[QStringLiteral("default_query_string")].toString().toStdString();
375
299
localId_defaultQryStr[local_id] = default_qry_str;
378
cat->scopes.emplace_back(std::pair<std::string,std::string>(id,local_id));
302
cat_ptr->scopes.emplace_back(std::pair<std::string,std::string>(id,local_id));
381
if (cat_o.contains("keywords"))
305
if (cat_o.contains(QStringLiteral("keywords")))
383
QJsonArray keyword_a = cat_o["keywords"].toArray();
307
QJsonArray keyword_a = cat_o[QStringLiteral("keywords")].toArray();
385
for (const auto item : keyword_a)
309
for (const auto & item : keyword_a)
387
311
QJsonObject keyword_o = item.toObject();
388
std::string id = keyword_o["id"].toString().toStdString();
389
std::string local_id = keyword_o["local_id"].toString().toStdString();
390
cat->keywords.emplace_back(id);
391
cat->keyword_ids.emplace_back(std::pair<std::string,std::string>(id,local_id));
312
std::string id = keyword_o[QStringLiteral("id")].toString().toStdString();
313
std::string local_id = keyword_o[QStringLiteral("local_id")].toString().toStdString();
314
cat_ptr->keywords.emplace_back(id);
315
cat_ptr->keyword_ids.emplace_back(std::pair<std::string,std::string>(id,local_id));
392
316
declared_category_keywords.emplace_back(id);
396
declared_order.emplace_back(cat->id);
397
categories.emplace_back(cat);
398
id_category_m[cat->id] = cat;
320
declared_order.emplace_back(cat_ptr->id);
321
categories.emplace_back(cat_ptr);
322
id_category_m[cat_ptr->id] = cat_ptr;
399
323
} // end "category"
401
if (item_o.contains("scope"))
325
if (item_o.contains(QStringLiteral("scope")))
403
QJsonObject scope_o = item_o["scope"].toObject();
405
std::shared_ptr<child_scope> cs = std::make_shared<child_scope>(cs_);
407
cs->id = scope_o["id"].toString().toStdString();
408
cs->local_id = scope_o["local_id"].toString().toStdString();
327
QJsonObject scope_o = item_o[QStringLiteral("scope")].toObject();
328
std::shared_ptr<child_scope> cs = std::make_shared<child_scope>();
329
cs->id = scope_o[QStringLiteral("id")].toString().toStdString();
330
cs->local_id = scope_o[QStringLiteral("local_id")].toString().toStdString();
409
331
declared_order.emplace_back(cs->local_id);
411
if (scope_o.contains("department"))
412
cs->department = scope_o["department"].toString().toStdString();
333
if (scope_o.contains(QStringLiteral("department")))
334
cs->department = scope_o[QStringLiteral("department")].toString().toStdString();
414
if (scope_o.contains("link_to_child"))
336
cs->link_to_child = true;
337
if (scope_o.contains(QStringLiteral("link_to_child")))
416
if (scope_o["link_to_child"].toString() == "false")
339
if (scope_o[QStringLiteral("link_to_child")].toString() == FALSE)
417
340
cs->link_to_child = false;
421
cs->link_to_child = true;
424
if (scope_o.contains("source_finder"))
426
if (scope_o["source_finder"].toString() == "true") {
427
cs->source_finder = true;
431
if (scope_o.contains("category_title_use_incoming"))
343
cs->source_finder = false;
344
if (scope_o.contains(QStringLiteral("source_finder"))
345
&& scope_o[QStringLiteral("source_finder")].toString() == TRUE) {
346
cs->source_finder = true;
349
if (scope_o.contains(QStringLiteral("category_title_use_incoming")))
433
351
cs->using_category_title_incoming = true;
435
else if (scope_o.contains("category_title_use_display_name"))
353
else if (scope_o.contains(QStringLiteral("category_title_use_display_name")))
437
355
cs->using_category_title_display_name = true;
441
if (scope_o.contains("category_title"))
442
cs->category_title = scope_o["category_title"].toString().toStdString();
359
if (scope_o.contains(QStringLiteral("category_title")))
360
cs->category_title = scope_o[QStringLiteral("category_title")].toString().toStdString();
444
if (scope_o.contains("_category_title"))
445
cs->category_title_ = scope_o["_category_title"].toString().toStdString();
362
if (scope_o.contains(QStringLiteral("_category_title")))
363
cs->category_title_ = scope_o[QStringLiteral("_category_title")].toString().toStdString();
446
364
qDebug() << "==== TITLE_: " << qstr(cs->category_title);
447
365
qDebug() << "==== TITLE_: " << qstr(cs->category_title_);
450
368
//TODO doc that a child_department may include LANGCODE for replacement
451
369
//from locale lang code, and COUNTRYCODE with locale country code
452
if (scope_o.contains("child_department"))
370
if (scope_o.contains(QStringLiteral("child_department")))
454
QString child_dept = scope_o["child_department"].toString();
455
if (lang.size() == 2)
457
if (child_dept.contains("LANGCODE"))
458
child_dept = child_dept.replace("LANGCODE", lang);
460
if (country.size() == 2)
372
QString child_dept = scope_o[QStringLiteral("child_department")].toString();
463
if (child_dept.contains("COUNTRYCODE"))
464
child_dept = child_dept.replace("COUNTRYCODE", country);
374
if (agg_scope_->lang().size() == 2 && child_dept.contains("LANGCODE"))
376
child_dept = child_dept.replace("LANGCODE", qstr(agg_scope_->lang()));
378
if (agg_scope_->country().size() == 2 && child_dept.contains("COUNTRYCODE"))
380
child_dept = child_dept.replace("COUNTRYCODE", qstr(agg_scope_->country()));
466
382
cs->child_department = child_dept.toStdString();
469
if (scope_o.contains("child_category"))
470
cs->child_category = scope_o["child_category"].toString().toStdString();
472
if (scope_o.contains("child_category_max_results"))
474
cs->child_category_max_results = (int)scope_o["child_category_max_results"].toInt();
475
cs->using_child_category_max_results = true;
477
else if (scope_o.contains("child_category"))
478
cs->using_child_category_max_results = true;
480
int card = get_setting_cardinality();
385
if (scope_o.contains(QStringLiteral("child_category")))
386
cs->child_category = scope_o[QStringLiteral("child_category")].toString().toStdString();
388
if (scope_o.contains(QStringLiteral("child_category_max_results")))
390
cs->child_category_max_results = scope_o[QStringLiteral("child_category_max_results")].toInt();
391
cs->using_child_category_max_results = true;
393
else if (scope_o.contains(QStringLiteral("child_category")))
395
cs->using_child_category_max_results = true;
398
int card = get_cardinality_setting();
483
401
cs->cardinality = card;
485
403
// but let declaration for category override user settings
486
if (scope_o.contains("cardinality"))
404
if (scope_o.contains(QStringLiteral("cardinality")))
488
int cardinality_ = scope_o["cardinality"].toInt();
406
int cardinality_ = scope_o[QStringLiteral("cardinality")].toInt();
489
407
if (cardinality_ > -1)
491
409
cs->cardinality = cardinality_;
494
if (scope_o.contains("first_result_renderer_common_id"))
412
if (scope_o.contains(QStringLiteral("first_result_renderer_common_id")))
496
std::string id = scope_o["first_result_renderer_common_id"].toString().toStdString();
414
std::string id = scope_o[QStringLiteral("first_result_renderer_common_id")].toString().toStdString();
497
415
cs->first_result_template = common_templates[id];
499
else if (scope_o.contains("first_result_renderer"))
417
else if (scope_o.contains(QStringLiteral("first_result_renderer")))
501
QJsonObject template_o = scope_o["first_result_renderer"].toObject();
419
QJsonObject template_o = scope_o[QStringLiteral("first_result_renderer")].toObject();
502
420
QJsonDocument t_d(template_o);
503
421
cs->first_result_template = sstr(t_d.toJson());
505
else if (scope_o.contains("first_result_template"))
423
else if (scope_o.contains(QStringLiteral("first_result_template")))
507
425
//support deprecated for backwards compatibiliity
508
qWarning () << QString("%1: DEPRECATED use of 'first_result_template'. Switch to 'first_result_renderer'").arg(qstr(scope_id));
509
QJsonObject template_o = scope_o["first_result_template"].toObject();
426
qWarning () << QString("%1: DEPRECATED use of 'first_result_template'. Switch to 'first_result_renderer'").arg(qstr(agg_scope_->scope_id()));
427
QJsonObject template_o = scope_o[QStringLiteral("first_result_template")].toObject();
510
428
QJsonDocument t_d(template_o);
511
429
cs->first_result_template = sstr(t_d.toJson());
514
if (scope_o.contains("renderer_common_id"))
432
if (scope_o.contains(QStringLiteral("renderer_common_id")))
516
std::string id = scope_o["renderer_common_id"].toString().toStdString();
434
std::string id = scope_o[QStringLiteral("renderer_common_id")].toString().toStdString();
517
435
cs->surface_template = common_templates[id];
518
436
cs->overriding_surface_template = true;
520
else if (scope_o.contains("renderer"))
438
else if (scope_o.contains(QStringLiteral("renderer")))
522
QJsonObject surface_template_o = scope_o["renderer"].toObject();
440
QJsonObject surface_template_o = scope_o[QStringLiteral("renderer")].toObject();
523
441
QJsonDocument st_d(surface_template_o);
524
442
cs->surface_template = sstr(st_d.toJson());
525
443
cs->overriding_surface_template = true;
527
else if (scope_o.contains("surface_template"))
445
else if (scope_o.contains(QStringLiteral("surface_template")))
529
447
//support deprecated for backwards compatibility
530
qWarning () << QString("%1: DEPRECATED use of 'surface_template'. Switch to 'surface_renderer'").arg(qstr(scope_id));
531
QJsonObject surface_template_o = scope_o["surface_template"].toObject();
448
qWarning () << QString("%1: DEPRECATED use of 'surface_template'. Switch to 'surface_renderer'").arg(qstr(agg_scope_->scope_id()));
449
QJsonObject surface_template_o = scope_o[QStringLiteral("surface_template")].toObject();
532
450
QJsonDocument st_d(surface_template_o);
533
451
cs->surface_template = sstr(st_d.toJson());
534
452
cs->overriding_surface_template = true;
537
if (scope_o.contains("search_renderer_common_id"))
455
if (scope_o.contains(QStringLiteral("search_renderer_common_id")))
539
457
qDebug() << "==== SEARCH red com fouund";
540
458
std::string id = scope_o["search_renderer_common_id"].toString().toStdString();
541
459
cs->search_template = common_templates[id];
542
460
cs->overriding_search_template = true;
544
else if (scope_o.contains("search_renderer"))
462
else if (scope_o.contains(QStringLiteral("search_renderer")))
546
QJsonObject search_template_o = scope_o["search_renderer"].toObject();
464
QJsonObject search_template_o = scope_o[QStringLiteral("search_renderer")].toObject();
547
465
QJsonDocument search_d(search_template_o);
548
466
cs->search_template = sstr(search_d.toJson());
549
467
cs->overriding_search_template = true;
551
else if (scope_o.contains("search_template"))
469
else if (scope_o.contains(QStringLiteral("search_template")))
553
471
//support deprecated for backwards compatibility
554
qWarning () << QString("%1: DEPRECATED use of 'search_template'. Switch to 'search_renderer'").arg(qstr(scope_id));
555
QJsonObject search_template_o = scope_o["search_template"].toObject();
472
qWarning () << QString("%1: DEPRECATED use of 'search_template'. Switch to 'search_renderer'").arg(qstr(agg_scope_->scope_id()));
473
QJsonObject search_template_o = scope_o[QStringLiteral("search_template")].toObject();
556
474
QJsonDocument search_d(search_template_o);
557
475
cs->search_template = sstr(search_d.toJson());
558
476
cs->overriding_search_template = true;
561
if (scope_o.contains("swap_result_attributes"))
479
if (scope_o.contains(QStringLiteral("swap_result_attributes")))
563
QJsonArray swaps_a = scope_o["swap_result_attributes"].toArray();
564
for (const auto swap_o_ : swaps_a)
481
QJsonArray swaps_a = scope_o[QStringLiteral("swap_result_attributes")].toArray();
482
for (const auto & swap_o_ : swaps_a)
566
484
QJsonObject swap_o = swap_o_.toObject();
567
std::pair<std::string,std::string> swap;
568
swap.first = swap_o["incoming_result_key"].toString().toStdString();
569
swap.second = swap_o["new_result_key"].toString().toStdString();
570
std::shared_ptr<std::pair<std::string,std::string>> swap_ = std::make_shared<std::pair<std::string,std::string>>(swap);
485
auto swap_ = std::make_shared<std::pair<std::string,std::string>>();
486
(*swap_).first = swap_o[QStringLiteral("incoming_result_key")].toString().toStdString();
487
(*swap_).second = swap_o[QStringLiteral("new_result_key")].toString().toStdString();
571
488
cs->swap_result_attributes.emplace_back(swap_);
576
if (scope_o.contains("result_category_id_to_common_template"))
492
if (scope_o.contains(QStringLiteral("result_category_id_to_common_template")))
578
QJsonArray items_a = scope_o["result_category_id_to_common_template"].toArray();
579
for (const auto item_o_ : items_a)
494
QJsonArray items_a = scope_o[QStringLiteral("result_category_id_to_common_template")].toArray();
495
for (const auto & item_o_ : items_a)
581
497
QJsonObject item_o = item_o_.toObject();
582
std::string res_cat_id = item_o["result_category_id"].toString().toStdString();
583
std::string common_template = item_o["common_template"].toString().toStdString();
498
std::string res_cat_id = item_o[QStringLiteral("result_category_id")].toString().toStdString();
499
std::string common_template = item_o[QStringLiteral("common_template")].toString().toStdString();
584
500
cs->result_category_id_to_common_template[res_cat_id] = common_template;
588
if (scope_o.contains("default_query_string"))
504
if (scope_o.contains(QStringLiteral("default_query_string")))
590
QString default_query_string = scope_o["default_query_string"].toString();
506
QString default_query_string = scope_o[QStringLiteral("default_query_string")].toString();
591
507
localId_defaultQryStr[cs->local_id] = default_query_string.toStdString();
594
if (scope_o.contains("only_in_search") && scope_o["only_in_search"] == "true")
510
if (scope_o.contains(QStringLiteral("only_in_search"))
511
&& scope_o[QStringLiteral("only_in_search")] == TRUE)
596
513
cs->only_in_search = true;
597
514
cs->overriding_search_template = true;
599
cs->only_in_search = false;
602
517
child_scopes.emplace_back(cs);
603
518
child_scopes_m[cs->local_id] = cs;
604
519
type_ids_m[cs->local_id].emplace_back(cs->local_id);
606
else if (item_o.contains("keyword"))
521
else if (item_o.contains(QStringLiteral("keyword")))
609
QJsonObject keyword_o = item_o["keyword"].toObject();
610
std::string keyword_id = keyword_o["keyword"].toString().toStdString();
611
keyword_.id = keyword_id;
523
auto keyword_ = std::make_shared<keyword>();
524
QJsonObject keyword_o = item_o[QStringLiteral("keyword")].toObject();
525
std::string keyword_id = keyword_o[QStringLiteral("keyword")].toString().toStdString();
526
keyword_->id = keyword_id;
613
528
declared_keywords.emplace_back(keyword_id);
614
529
declared_order.emplace_back(keyword_id);
616
int card = get_setting_cardinality();
531
int card = get_cardinality_setting();
619
keyword_.cardinality = card;
534
keyword_->cardinality = card;
621
536
// but let declaration for category override user settings
622
if (keyword_o.contains("cardinality"))
537
if (keyword_o.contains(QStringLiteral("cardinality")))
624
int keyword_cardinality_ = keyword_o["cardinality"].toInt();
539
int keyword_cardinality_ = keyword_o[QStringLiteral("cardinality")].toInt();
625
540
if (keyword_cardinality_ > -1)
627
keyword_.cardinality = keyword_cardinality_;
542
keyword_->cardinality = keyword_cardinality_;
630
545
if (using_departments)
632
std::string dept_title_msgid = keyword_o["_department_title"].toString().toStdString();
547
std::string dept_title_msgid = keyword_o[QStringLiteral("_department_title")].toString().toStdString();
633
548
keyword_deptTitleMsgid[keyword_id] = dept_title_msgid;
634
if (keyword_o.contains("department"))
549
if (keyword_o.contains(QStringLiteral("department")))
637
std::string kwdept = keyword_o["department"].toString().toStdString();
551
std::string kwdept = keyword_o[QStringLiteral("department")].toString().toStdString();
638
552
keyword_deptId[keyword_id] = kwdept;
639
keyword_.dept_id = kwdept;
553
keyword_->dept_id = kwdept;
641
555
else if (dept_id_of_root_keywords_only.empty())
642
556
dept_id_of_root_keywords_only = keyword_id;
644
558
std::string category;
645
if (keyword_o.contains("shared_category"))
559
if (keyword_o.contains(QStringLiteral("shared_category")))
647
561
category = keyword_id; // note category is synomous with keyword and is therefore used even when not shared category
648
562
//note: removed support for shared_category value other than "true"
649
if (keyword_o["shared_category"] == "true")
563
if (keyword_o[QStringLiteral("shared_category")] == TRUE)
651
std::string title_msgid = keyword_o["_shared_category_title"].toString().toStdString();
565
std::string title_msgid = keyword_o[QStringLiteral("_shared_category_title")].toString().toStdString();
652
566
shared_keyword_cat_titlemsgid[category] = title_msgid;
653
567
shared_keyword_cats[keyword_id] = category;
654
568
shared_keywords.emplace_back(keyword_id);
657
571
//we do not support first result with non shared category keyword scopes
658
if (category == keyword_id && keyword_o.contains("first_result_renderer_common_id"))
572
if (category == keyword_id && keyword_o.contains(QStringLiteral("first_result_renderer_common_id")))
660
std::string id = keyword_o["first_result_renderer_common_id"].toString().toStdString();
574
std::string id = keyword_o[QStringLiteral("first_result_renderer_common_id")].toString().toStdString();
661
575
keyword_catname_first_result_renderers[category] = common_templates[id];
663
else if (category == keyword_id && keyword_o.contains("first_result_renderer"))
577
else if (category == keyword_id && keyword_o.contains(QStringLiteral("first_result_renderer")))
665
QJsonObject template_o = keyword_o["first_result_renderer"].toObject();
579
QJsonObject template_o = keyword_o[QStringLiteral("first_result_renderer")].toObject();
666
580
QJsonDocument t_d(template_o);
667
581
keyword_catname_first_result_renderers[category] = sstr(t_d.toJson());
669
else if (category == keyword_id && keyword_o.contains("first_result_template"))
583
else if (category == keyword_id && keyword_o.contains(QStringLiteral("first_result_template")))
671
585
//support deprecated for backwards compatibiliity
672
qWarning () << QString("%1: DEPRECATED use of 'first_result_template'. Switch to 'first_result_renderer'").arg(qstr(scope_id));
673
QJsonObject template_o = keyword_o["first_result_template"].toObject();
586
qWarning () << QString("%1: DEPRECATED use of 'first_result_template'. Switch to 'first_result_renderer'")
587
.arg(qstr(agg_scope_->scope_id()));
588
QJsonObject template_o = keyword_o[QStringLiteral("first_result_template")].toObject();
674
589
QJsonDocument t_d(template_o);
675
590
keyword_catname_first_result_renderers[category] = sstr(t_d.toJson());
846
759
//iterate declared child scopes
847
760
for (std::shared_ptr<child_scope> child : child_scopes)
849
AggChildScope ch(child->id);
851
ch.set_local_id(child->local_id);
762
auto ch_ptr = std::make_shared<AggChildScope>(child->id);
763
ch_ptr->set_local_id(child->local_id);
853
765
localId_id_m[child->local_id] = child->id;
855
767
if (child->using_category_title_incoming)
857
ch.set_category_title_incoming(true);
769
ch_ptr->set_category_title_incoming(true);
859
771
else if (child->using_category_title_display_name)
861
ch.set_category_title_display_name(true);
773
ch_ptr->set_category_title_display_name(true);
865
777
if (child->category_title_ != "")
867
ch.set_category_title(_(child->category_title_.c_str()));
779
ch_ptr->set_category_title(_(child->category_title_.c_str()));
870
ch.set_category_title(child->category_title);
782
ch_ptr->set_category_title(child->category_title);
873
785
if (child->child_department != "")
874
ch.set_child_department(child->child_department);
786
ch_ptr->set_child_department(child->child_department);
876
788
if (child->department != "")
877
ch.set_department(child->department);
789
ch_ptr->set_department(child->department);
879
ch.set_category_link_to_child(child->link_to_child);
791
ch_ptr->set_category_link_to_child(child->link_to_child);
881
793
if (child->child_category != "")
882
ch.set_child_category(child->child_category);
794
ch_ptr->set_child_category(child->child_category);
884
796
if (child->using_child_category_max_results)
885
ch.set_child_category_max_results(child->child_category_max_results);
797
ch_ptr->set_child_category_max_results(child->child_category_max_results);
887
int card = get_setting_cardinality();
799
int card = get_cardinality_setting();
889
ch.set_cardinality(card);
801
ch_ptr->set_cardinality(card);
890
802
if (child->cardinality >= -1) // let declared override user settings
891
ch.set_cardinality(child->cardinality);
803
ch_ptr->set_cardinality(child->cardinality);
893
805
if (!child->first_result_template.empty())
894
ch.set_first_result_template(child->first_result_template);
806
ch_ptr->set_first_result_template(child->first_result_template);
896
808
if (child->overriding_surface_template)
898
ch.set_surface_template(child->surface_template);
810
ch_ptr->set_surface_template(child->surface_template);
901
ch.set_override_surface_template(false);
814
ch_ptr->set_override_surface_template(false);
903
817
if (child->overriding_search_template)
905
ch.set_search_template(child->search_template);
819
ch_ptr->set_search_template(child->search_template);
908
ch.set_override_search_template(false);
910
ch.set_only_in_search(child->only_in_search);
912
ch.set_source_finder(child->source_finder);
913
qWarning () << QString("%1: ADDING DECLARED child scope: %2, local_id: %3").arg(qstr(scope_id), qstr(ch.id()), qstr(ch.local_id()));
914
scopes_m[ch.local_id()] = std::make_shared<AggChildScope>(ch);
915
current_scopes.emplace_back(ch.local_id());
823
ch_ptr->set_override_search_template(false);
826
ch_ptr->set_only_in_search(child->only_in_search);
828
ch_ptr->set_source_finder(child->source_finder);
829
qWarning () << QString("%1: ADDING DECLARED child scope: %2, local_id: %3")
830
.arg(qstr(agg_scope_->scope_id()), qstr(ch_ptr->id()), qstr(ch_ptr->local_id()));
831
scopes_m[ch_ptr->local_id()] = ch_ptr;
832
current_scopes.emplace_back(ch_ptr->local_id());
921
836
void Query::create_departments(us::SearchReplyProxy const &reply_)
923
838
//create depts for declared keywords
924
for (auto item : keyword_deptTitleMsgid)
839
for (const auto & item : keyword_deptTitleMsgid)
926
841
auto iter = keyword_deptId.find(item.first);
927
842
if (iter != keyword_deptId.end())
932
d.title = _(item.second.c_str());
934
depts[d.id] = std::make_shared<dept>(d);
846
auto dept_ptr = std::make_shared<dept>();
847
dept_ptr->title = _(item.second.c_str());
848
dept_ptr->id = item.first;
849
depts[dept_ptr->id] = dept_ptr;
852
if (dept_id_of_root.empty())//means no declared scopes, only keywords
853
dept_id_of_root = dept_id_of_root_keywords_only;
937
855
us::DepartmentList depts_;
938
856
us::CannedQuery cannedQuery("aggregator");
939
if (dept_id_of_root.empty())//means no declared scopes, only keywords
940
dept_id_of_root = dept_id_of_root_keywords_only;
941
857
cannedQuery.set_department_id(dept_id_of_root);
942
us::Department::SPtr topDept;
943
topDept = move(us::Department::create("", cannedQuery, depts[dept_id_of_root]->title));
944
for ( auto & item : depts)
858
us::Department::SPtr topDept = move(us::Department::create("", cannedQuery, depts[dept_id_of_root]->title));
859
for (const auto & item : depts)
946
861
if (item.first == dept_id_of_root)