Как поощрить неанонимное редактирование на MediaWiki?

В настоящее время то, что вы делаете, содержит некоторые ошибки. В нижней строке вы получите ошибку.

text = text.Replace(DT11.Done, DT11.TotalAcc);

Поскольку в файле, который вы указали для столбца , значение «Готово» действительно отсутствует (пустое или пустое), поэтому оно вызывает исключение. Потому что метод Replace принимает первый аргумент и заменяет его значением, указанным в качестве второго аргумента. В случае, если оно пустое или пустое, возникнет исключение

. Поэтому вам нужно изменить код, как показано ниже. Пожалуйста, примите во внимание, что я написал код с использованием вашего класса под названием "Flds" . Я не знаю, почему на самом деле вы используете его. Это может быть удалено в любом случае. Не имеет смысла использовать его в этом процессе

    private static void SyncAndUpdateFileContent(string fileToSync)
    {
        if (!File.Exists(@"C:\Users\" + fileToSync))
        {
            throw new FileNotFoundException($"File {fileToSync} does not exist!");
        }

        var ori_Files11 = @"C:\Users\var\log\test.txt";
        List<Flds> ListDT11 = new List<Flds>();
        string fileHeader = null;
        using (StreamReader file11 = new StreamReader(ori_Files11))
        {
            string line;
            while ((line = file11.ReadLine()) != null)
            {
                //Get file header copy
                if (string.IsNullOrEmpty(fileHeader))
                {
                    fileHeader = line;
                    continue;
                }

                string[] SpltStr11 = line.Split('|');
                Flds DT11 = new Flds
                {
                    Date = SpltStr11[0],
                    Name = SpltStr11[1],
                    TotalAcc = SpltStr11[2],
                    Folder = SpltStr11[3],
                    Done = SpltStr11[4]
                };

                ListDT11.Add(DT11);
            }
        }

        var stringBuilder = new StringBuilder($"{fileHeader}");
        foreach (var listDT11Item in ListDT11.Skip(1))
        {
            stringBuilder.AppendLine($"{listDT11Item.Date}|{listDT11Item.Name}|{listDT11Item.TotalAcc}|{listDT11Item.Folder}|{listDT11Item.TotalAcc}");
        }

        //Just call WriteAllText method at the end
        File.WriteAllText(ori_Files11, stringBuilder.ToString());
    }
11
задан hlovdal 27 August 2010 в 00:02
поделиться

11 ответов

Запретите анонимное редактирование и позвольте людям войти в систему с помощью их доменных логинов (LDAP). Часто порог является регистрацией нового пользователя и имени пользователя составления и пароля и такого.

4
ответ дан 3 December 2019 в 01:34
поделиться

Можно Выключить Анонимное Редактирование в Mediawiki как так:

  • Отредактируйте LocalSettings.php и добавьте следующую установку:

    $wgDisableAnonEdit = true;
    
  • Отредактируйте includes/SkinTemplate.php, найдите $fname-edit и измените код для сходства с этим (т.е. в основном переносить следующий код между wfProfileIn() и wfProfileOut() функции):

    wfProfileIn( "$fname-edit" );
    global $wgDisableAnonEdit;
    if ( $wgUser->mId || !$wgDisableAnonEdit) {
    // Leave this as is
    }
    wfProfileOut( "$fname-edit" );

Затем, можно хотеть отключить [Редактирование] ссылки на разделы. Сделать это, открытое includes/Skin.php и поиск editsection. Вы будете видеть что-то как:

if (!$wgUser->getOption( 'editsection' ) ) {

Изменение, что к:

global $wgDisableAnonEdit;
if (!$wgUser->getOption( 'editsection' ) || !$wgDisableAnonEdit ) {

Редактирование раздела теперь заблокировано для анонимных пользователей.

17
ответ дан 3 December 2019 в 01:34
поделиться

Я думаю, что необходимо препятствовать анонимным редактированиям путем запрещения им - это - внутренняя Wiki, в конце концов.

Обратная сторона - Вы, должен сделать процесс входа в систему максимально легким. Надо надеяться, можно настроить cookie входа в систему, чтобы иметь достойную длину (как 1 месяц), таким образом, они только должны войти в систему однажды в месяц.

3
ответ дан 3 December 2019 в 01:34
поделиться

Подыграйте эго людей и добавьте систему представителя отчасти как здесь. Просто сделайте виджет для домашней страницы, которая показывает количество редактирований, сделанных лучшими 5 пользователями или чем-то. Дайте лучшему 1 или 2 пользователям вознаграждение MVP в регулярном (ежемесячно?) интервалы.

3
ответ дан 3 December 2019 в 01:34
поделиться

Я рекомендовал бы проверить wikipatterns.org - большой сайт о социальных аспектах wikis

2
ответ дан 3 December 2019 в 01:34
поделиться

Ну, я сомневаюсь, что это решение будет ценно для hlovdal, учитывая, что этому вопросу теперь два месяца, но возможно кто-то еще найдет это полезным:

Оптимальное решение этой проблемы состоит в том, чтобы включить автоматические логины. Это требует двух шагов. Во-первых, необходимо добавить автоматическую аутентификацию к веб-сервису. Прямо сейчас мы используем Apache с пакетом Debian usn-libapache2-authenntlm-perl на нашем внутреннем приложении server*. (Наша сеть является Active Directory и, очевидно, сервер работает на Linux Debian.) Второй, Вам нужно расширение MediaWiki, которое делает MediaWiki, знающий об аутентификации веб-сервиса. Я использовал Автоматический Модуль аутентификации REMOTE_USER успешно на веб-сервере Apache, который был связан в нашу сеть через модуль аутентификации NTLM, но я действительно вспоминаю, что это потребовало, чтобы немного массирования кода заставило его работать:

  • Я должен был следовать за "неприятными взломами", данными на странице расширения, изменяя setPassword () и addUser () функции, чтобы всегда возвратить true вместо того, чтобы всегда возвратить false.
  • Так как Active Directory нечувствителен к регистру, и MediaWiki не, я заменил оба экземпляра оператора $username = $_SERVER['REMOTE_USER'] с $username = getCanonicalName($_SERVER['REMOTE_USER']).
  • Так как я хотел только позволить определенным людям в компании использовать нашу Wiki, я установил, автосоздают (), чтобы всегда возвратить false. Это не звучит, как будто необходимо волноваться об этом, таким образом, необходимо уехать, автосоздают () при всегда возвращении true, что означает, что кто-либо в сети компании сможет получить доступ к Wiki.

Изящная вещь об этом решении состоит в том, что никто не должен входить в систему в Wiki, никогда; они просто переходят к странице Wiki, и они зарегистрированы под их идентификатором сети.

* Мы просто переключились на это с сервера Red Hat, который использовал mod_ntlm. К сожалению, mod_ntlm не был обновлен в некоторое время, и он начинал эпизодически перестать работать. Я упоминаю это, потому что я начал натыкаться на проблему производительности с нашей текущей конфигурацией MediaWiki, которая может потребовать дальнейшего массирования кода....

3
ответ дан 3 December 2019 в 01:34
поделиться

Удостоверьтесь, что пользователи не добираются, вышел из системы, если они отводят взгляд с экрана или чихают или царапают голову. Вы хотите длинный, персистентный, сессии. После того, как вошел в систему, останьтесь, вошел в систему.

Это - проблема с MediaWiki, который наша компания использует внутренне - Вы входите в систему, действительно наполните, затем возвратитесь позже, и она зарегистрировала Вас, но уведомление о том, чтобы не быть зарегистрированным больше так незначительно на экране, что пользователь никогда не замечает.

2
ответ дан 3 December 2019 в 01:34
поделиться

Если это работает во внутренней сети, Вы могли бы вытянуть Информацию Active Directory так, чтобы никто не входил в систему, никогда. Это - то, как я делаю это на работе. Таким образом, если они зарегистрированы в свою машину окон, затем мои веб-приложения могут взять свое имя пользователя и партнера что (или их идентификатор пользователя) с их редактированиями.

Я не знаю, было ли это легко добавить к MediaWiki, все же.

2
ответ дан 3 December 2019 в 01:34
поделиться

ТАКЖЕ - чрезвычайно низкий барьер для регистрации. Вы могли позволить людям указывать свое имя при создании редактирования. Когда они готовы, они могут наконец войти в систему, избегают необходимости вводить их имя все время.

1
ответ дан 3 December 2019 в 01:34
поделиться

Вы сказали, что это находится в ведомственной ситуации. Разве Вы не можете добавить опцию к Wiki, где она высказывает образованное предположение относительно того, кто редактирует на основе IP-адреса и аннотирует редактирование соответственно?

0
ответ дан 3 December 2019 в 01:34
поделиться

Явно использование некоторой формы службы каталогов (LDAP), вероятно, было бы хорошей идеей, так, чтобы Ваши пользователи всегда полностью идентифицировались. С другой стороны, wikis подвергаются своей собственной динамике, на самом деле некоторые wikis так успешны, потому что они могут быть анонимно отредактированы, таким образом, это - другая вещь иметь в виду.

Кроме этого, лично я попытался бы создать своего рода стимул для пользователей для содействия открыто и идентифицирующийся: это могло быть основано на системе точки/счета так, чтобы была статистика, показанная для всех пользователей, которые способствовали Wiki каждый день, это могло возможно даже создать своего рода конкуренцию.

Аналогично, Wiki не могла по умолчанию показать анонимно внесенное содержание без них рассматриваемый сначала, который будет другим стимулом для пользователей способствовать открыто.

2
ответ дан 3 December 2019 в 01:34
поделиться
Другие вопросы по тегам:

Похожие вопросы: