diff --git a/admin/lang.php b/admin/lang.php index b568d0c1a9f..3aa28779610 100644 --- a/admin/lang.php +++ b/admin/lang.php @@ -20,7 +20,8 @@ $strlanguage = get_string("language"); $strcurrentlanguage = get_string("currentlanguage"); $strmissingstrings = get_string("missingstrings"); - $strcomparelanguage = get_string("comparelanguage"); + $streditstrings = get_string("editstrings", 'admin'); + $stredithelpdocs = get_string("edithelpdocs", 'admin'); $strthislanguage = get_string("thislanguage"); switch ($mode) { @@ -29,11 +30,11 @@ $title = $strmissingstrings; $button = '
'. ''. - '
'; + ''; break; case "compare": - $navigation = "$strlanguage -> $strcomparelanguage"; - $title = $strcomparelanguage; + $navigation = "$strlanguage -> $streditstrings"; + $title = $streditstrings; $button = '
'. ''. '
'; @@ -59,13 +60,13 @@ echo "$strcurrentlanguage:"; echo ""; echo popup_form ("$CFG->wwwroot/$CFG->admin/lang.php?lang=", $langs, "chooselang", $currlang, "", "", "", true); - echo ""; - print_heading("$strmissingstrings"); - print_heading("$strcomparelanguage"); - echo "

"; + echo ''; $options["lang"] = $currentlang; print_single_button("http://moodle.org/download/lang/", $options, get_string("latestlanguagepack")); - echo "
"; + echo ""; + print_heading("$strmissingstrings"); + print_heading("$streditstrings"); + print_heading("$stredithelpdocs"); print_footer(); exit; } @@ -166,7 +167,7 @@ } } - print_heading_with_help($strcomparelanguage, "langedit"); + print_heading_with_help($streditstrings, "langedit"); print_simple_box_start("center", "80%"); echo '
'; diff --git a/admin/langdoc.php b/admin/langdoc.php new file mode 100755 index 00000000000..2c408946be2 --- /dev/null +++ b/admin/langdoc.php @@ -0,0 +1,189 @@ +shortname: $stredithelpdocs: $currentfile", "$site->fullname", + "$stradministration -> ". + "$strconfiguration -> + $strlanguage -> $stredithelpdocs", + 'choosefile.popup', '', true); + + $currentlang = current_language(); + $langdir = "$CFG->dirroot/lang/$currentlang"; + $enlangdir = "$CFG->dirroot/lang/en"; + + error_reporting(0); // Error reporting turned off due to non-existing files + + // Generate selection for all help and documentation files + + // Get all files from /docs directory + + if (! $files = get_directory_list("$CFG->dirroot/lang/en/docs", "CVS")) { + error("Could not find English language docs files!"); + } + + foreach ($files as $filekey => $file) { // check all the docs files. + $options["docs/$file"] = "docs/$file"; + // add (!) if file doesn't exists or is empty + if (( !file_exists("$langdir/docs/$file")) || (filesize("$langdir/docs/$file") == 0)) { + $options["docs/$file"] .= "$filemissingmark"; + } + } + + // Get all files from /help directory + + if (! $files = get_directory_list("$CFG->dirroot/lang/en/help", "CVS")) { + error("Could not find English language help files!"); + } + + foreach ($files as $filekey => $file) { // check all the help files. + $options["help/$file"] = "help/$file"; + if (!file_exists("$langdir/help/$file")) { + $options["help/$file"] .= "$filemissingmark"; + } + } + + echo "
"; + echo $prevfile; + echo popup_form ("$CFG->wwwroot/$CFG->admin/langdoc.php?sesskey=$USER->sesskey&currentfile=", $options, "choosefile", $currentfile, "", "", "", true); + echo $nextfile; + echo "
"; + + // Shall I save POSTed data? + + if (isset($_POST['currentfile'])) { + if (confirm_sesskey()) { + if (langdoc_save_file($langdir, $currentfile, $_POST['filedata'])) { + notify(get_string("changessaved")." ($langdir/$currentfile)", "green"); + } else { + error("Could not save the file '$currentfile'!", "langdoc.php?currentfile=$currentfile&sesskey=$USER->sesskey"); + } + } + } + + // Generate textareas + + if (!empty($currentfile)) { + + if (!file_exists("$langdir/$currentfile")) { + if (!touch("$langdir/$currentfile")) { + echo "

".get_string("filemissing", "", "$langdir/$currentfile")."

"; + } + } + + if ($f = fopen("$langdir/$currentfile","r+")) { + $editable = true; + fclose($f); + } else { + $editable = false; + echo "

".get_string("makeeditable", "", "$langdir/$currentfile")."

"; + } + + echo "\n"; + if ($fileeditorinline == 1) { + echo "\n\n"; + } + echo "\n\n
\n"; + echo "\n"; + link_to_popup_window("/lang/en/$currentfile", "popup", get_string("preview")); + echo "
\n"; + + if ($editable) { + echo "
"; + echo ''; + echo ''; + } + + echo "\n"; + link_to_popup_window("/lang/$currentlang/$currentfile", "popup", get_string("preview")); + echo "
"; + + if ($editable) { + echo '
'; + echo ''; + } + + error_reporting($CFG->debug); + } + + print_footer(); + + + + +////////////////////////////////////////////////////////////////////// + +function langdoc_save_file($path, $file, $content) { + +// $path is a full pathname to the file +// $file is the file to overwrite. +// $content are data to write + + global $CFG, $USER; + + error_reporting(0); + if (!$f = fopen("$path/$file","w")) { + return false; + } + error_reporting(7); + + $content = str_replace("\r", "",$content); // Remove linefeed characters + $content = preg_replace("/\n{3,}/", "\n\n", $content); // Collapse runs of blank lines + $content = trim($content, "\n"); // Delete leading/trailing lines + $content = str_replace("\\","",$content); // Delete all slashes + $content = str_replace("%%","%",$content); + + fwrite($f, $content); + + fclose($f); + + // Remove file if its empty + + if (filesize("$path/$file") == 0) { + unlink("$path/$file"); + } + + return true; +} + +?> diff --git a/lang/en/admin.php b/lang/en/admin.php index 12054f0442f..c5a801d1920 100755 --- a/lang/en/admin.php +++ b/lang/en/admin.php @@ -90,6 +90,8 @@ $string['dstisforcedto'] = 'Force all users to use'; $string['dstpresets'] = 'DST Presets'; $string['emptydstlist'] = 'There are currently no DST presets defined. You can add one by clicking on the Add button.'; $string['editingdstpreset'] = 'Editing a DST preset'; +$string['edithelpdocs'] = 'Edit help documents'; +$string['editstrings'] = 'Edit strings'; $string['errordstpresetactivateearlier'] = 'The month of activation must be earlier than the month of deactivation'; $string['errordstpresetnameempty'] = 'The preset name cannot be empty'; $string['errordstpresetnameexists'] = 'Another preset with that name already exists';