Skip to content

Commit

Permalink
changed glossary merge function to have a second optional parameter t…
Browse files Browse the repository at this point in the history
…hat changes merge functionality to overwrite instead of simply add.

$release
  • Loading branch information
TimoBoer committed Dec 5, 2022
1 parent b8d9556 commit d9efdb8
Show file tree
Hide file tree
Showing 4 changed files with 55 additions and 11 deletions.
3 changes: 2 additions & 1 deletion editor/importpages/import-choose.php
Expand Up @@ -144,7 +144,8 @@
<div id="content" class="content">
<div id="mergeGlossary">
<div class="merge_title"><?php echo GLOSSARY;?></div>
<div><label><input type="checkbox" id="mergeGlossaryCheck"><?php echo MERGE_GLOSSARY;?></label></div>
<div><label><input type="checkbox" id="mergeGlossaryCheck" onclick="this.checked ? getElementById('overwriteGlossaryCheck').disabled = false : (getElementById('overwriteGlossaryCheck').disabled = true , getElementById('overwriteGlossaryCheck').checked = false) "><?php echo MERGE_GLOSSARY;?></label></div>
<div><label><input type="checkbox" id="overwriteGlossaryCheck" disabled ><?php echo OVERWRITE_GLOSSARY;?></label></div>
</div>
<div class="merge_title"><?php echo PAGES;?></div>
<div id="pages">
Expand Down
53 changes: 45 additions & 8 deletions editor/importpages/merge.php
Expand Up @@ -8,7 +8,7 @@

require( "../../" . $xerte_toolkits_site->php_library_path . "xmlInspector.php" );

function merge_pages_to_project($source_project_id, $source_pages, $target_project, $target_page_location, $merge_glossary)
function merge_pages_to_project($source_project_id, $source_pages, $target_project, $target_page_location, $merge_glossary, $overwrite_glossary)
{
global $xerte_toolkits_site;

Expand Down Expand Up @@ -42,7 +42,6 @@ function merge_pages_to_project($source_project_id, $source_pages, $target_proje

$filemapping = getFileMapping($source_folder . "/media", $target_folder . "/media");
$filesToCopy = array();

if($merge_glossary === "true")
{
$str_glossary = $xmlSource->documentElement->getAttribute("glossary");
Expand All @@ -53,11 +52,27 @@ function merge_pages_to_project($source_project_id, $source_pages, $target_proje
{
$orig_glossary = $xmlTarget->documentElement->getAttribute("glossary");
}
if($orig_glossary != "")
{
$orig_glossary .= "||";
}
$orig_glossary .= $str_glossary;
if ($overwrite_glossary === "false") {
if ($orig_glossary != "") {
$orig_glossary .= "||";
}
$orig_glossary .= $str_glossary;
} else {
if ($orig_glossary === "") {
$orig_glossary .= $str_glossary;
} else {
$orig_gloss_array = glossaryToArray($orig_glossary);
$str_gloss_array = glossaryToArray($str_glossary);
$doubles = array_uintersect($orig_gloss_array, $str_gloss_array, 'compareTerms');
foreach ($doubles as $key => $var){
unset($orig_gloss_array[$key]);
}
$orig_glossary = arrayToGlossary($orig_gloss_array);
$orig_glossary .= "||";
$orig_glossary .= $str_glossary;
}

}
$xmlTarget->documentElement->setAttribute("glossary", $orig_glossary);
}
$bannedLinkIDs = array();
Expand Down Expand Up @@ -137,6 +152,27 @@ function merge_pages_to_project($source_project_id, $source_pages, $target_proje


}
//converts a glossary to an array.
function glossaryToArray($glossary){
$glosArray = array();
$rows = explode('||', $glossary);
foreach ($rows as $key => $row){
$glosArray[$key] = explode('|', $row);
}
return $glosArray;
}
//returns the indexes of all terms in source that are also in target
function compareTerms($source, $target){
return strcmp($source[0], $target[0]);
}
//converts an array to a glossary
function arrayToGlossary($inputArray) {
$glossary = "";
foreach ($inputArray as $row) {
$glossary .= $row[0] . "|" . $row[1] . "||";
}
return substr($glossary, 0, -2);
}

function getFileMapping($source_media_folder, $target_media_folder)
{
Expand Down Expand Up @@ -273,5 +309,6 @@ function addNode($index, $node, $root)
$target_project = $_REQUEST["target_project"];
$target_insert_page_position = $_REQUEST["target_page_position"];
$merge_glossary= $_REQUEST["merge_glossary"];
merge_pages_to_project($source_project, $source_pages, $target_project, $target_insert_page_position, $merge_glossary);
$overwrite_glossary = $_REQUEST["overwrite_glossary"];
merge_pages_to_project($source_project, $source_pages, $target_project, $target_insert_page_position, $merge_glossary, $overwrite_glossary);

9 changes: 7 additions & 2 deletions editor/js/import-choose.js
Expand Up @@ -181,6 +181,7 @@ function showPageData(xot_id, data) {
$("#mergeGlossary").show();
}else{
$("#mergeGlossaryCheck").prop("checked", false);
$("#overwriteGlossaryCheck").prop("checked", false);
$("#mergeGlossary").hide();
}

Expand Down Expand Up @@ -208,6 +209,7 @@ function showPageData(xot_id, data) {
}
else {
$("#mergeGlossaryCheck").prop("checked", false);
$("#overwriteGlossaryCheck").prop("checked", false);
$("#mergeGlossary").hide();
$("#pages").html("");
$("#merge").hide();
Expand Down Expand Up @@ -319,6 +321,7 @@ function init_workspace()
}

$("#mergeGlossaryCheck").prop("checked", false);
$("#overwriteGlossaryCheck").prop("checked", false)
$("#mergeGlossary").hide();
$("#pages").html("");
$("#merge").hide();
Expand Down Expand Up @@ -384,7 +387,8 @@ function init()

});
merge_glossary = $("#mergeGlossaryCheck").is(":checked");
if(source_pages.length > 0 || merge_glossary)
overwrite_glossary = $("#overwriteGlossaryCheck").is(":checked");
if(source_pages.length > 0 || merge_glossary || overwrite_glossary)
{
source_page = source_pages.join();
source_project = sourceProject;
Expand Down Expand Up @@ -420,7 +424,8 @@ function init()
target_project: target_project,
target_page_position: target_insert,
source_pages: source_page,
merge_glossary: merge_glossary
merge_glossary: merge_glossary,
overwrite_glossary: overwrite_glossary
},
dataType: "text",
type: "POST"
Expand Down
1 change: 1 addition & 0 deletions languages/en-GB/editor/importpages/import-choose.inc
Expand Up @@ -2,5 +2,6 @@

define("MERGE", "Import pages");
define("MERGE_GLOSSARY", "Merge glossary");
define("OVERWRITE_GLOSSARY", "Replace the same terms");
define("PAGES", "Pages");
define("GLOSSARY", "Glossary");

0 comments on commit d9efdb8

Please sign in to comment.