Avatar billede Slettet bruger
23. maj 2006 - 12:10 Der er 3 kommentarer og
1 løsning

Versionsstyring i CMS'er

Hej!

Jeg har sakset nedenstående fra beskrivelsen af et CMS. Og så blev jeg nysgerrig, er der nogend er kan komme med et bud på hvordan man teoretisk set sammenligner 2 tekster og skiller forskellene ud?

Der er jo ingen grund til at opfinde den dybe tallerken 2 gange ;)

**************************

"Såfremt dokumentrevisionsfunktionen er aktiveret af administrator for et givent netsted, vil der i forbindelse med et workflow blive vist hvilke ting der er blevet ændret i forhold til en tidligere version af en given tekst.

Funktionen er implementeret som et integreret element i workflow-funktionaliteten, således at den eller de personer, der skal godkende en ny version af et dokument, i detaljer kan se hvilke ændringer, der er foretaget i teksten i forhold til den senest godkendte original-udgave.

Funktionen sammenligner den rettede version af dokumentet med den aktive (oprindelige) version og markerer i teksteditoren både tekst, der er blevet slettet, tekst der er blevet ændret og tekst, der er blevet tilføjet i forhold til den aktive version."
Avatar billede roenving Novice
23. maj 2006 - 12:29 #1
Jeg ville nok tagge mig ud af det, og evt. supplere med en ændringsliste, der henviste til de tags ...

-- tags skulle så automatisk fjernes til den aktive version !-)
Avatar billede soc127754 Nybegynder
23. maj 2006 - 13:09 #2
Jeg tror spørgsmålet mere går på hvordan man finder forskellene og mindre på hvordan man viser forskellene.

Man finder forskellene ved at diff'e de to tekster. Eks. ved at sammenligne dokumenterne sætning for sætning eller lign. Man kan sikkert google sig til en diff-algoritme.  Dernæst kan man eks. indsætte tags, der formatterer teksten så man kan se de tekstafsnit, der adskiller sig fra hinanden.

Se eks. dette link for en løsning:
http://ejohn.org/projects/javascript-diff-algorithm/
Avatar billede Slettet bruger
23. maj 2006 - 13:25 #3
Det var lige præcis en løsning som soc127754 (sikke et brugernavn) foreslår jeg var ude efter. Så kan jeg evt. selv omskrive til PHP eller lede videre :)
Avatar billede Slettet bruger
23. maj 2006 - 15:33 #4
Hvis vi forestiller os at det er ren tekst der skal bearbejdes, hvad siger i så til den her slamkode? Den er i PHP...

<?

$f1_arr = explode(' ', 'Dette er bare en test');
$f2_arr = explode(' ', 'Dette var bare en lille leg som vi legede tralula');

$f1 = implode( "\n", $f1_arr );
$f2 = implode( "\n", $f2_arr );

$fjernet = array_diff($f1_arr, $f2_arr);
$tilfoejet = array_diff($f2_arr, $f1_arr);

$antal1 = count($f1_arr);
$antal2 = count($f2_arr);

$antal = $antal2;
if($antal1 > $antal2) {
$antal = $antal1;
}

$i = 0;

while($i < $antal) {
    $tjek = 0;
    $ny = $f2_arr[$i];

    if($fjernet[$i] != '') {
    echo '<span style="text-decoration:line-through;color:red">' . $fjernet[$i] . '</span> ';
    }

    if($tilfoejet[$i] != '' && $tilfoejet[$i] != $fjernet[$i]) {
    echo '<span style="color:green">' . $tilfoejet[$i] . '</span> ';
    $tjek = 1;
    }

    if($tjek == 0) {
    echo $ny. ' ';
    }

    $i++;
}

?>
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester