Пробую OpenAdmin, нужна помощь (программа школьного администрирования на Perl)

Обсуждаем вопросы продвижения Linux в школах, делимся опытом, рассказываем об успехах, просим помощи

Модератор: Модераторы разделов

Ответить
Аватара пользователя
greengroon
Сообщения: 119
ОС: Ubuntu 9.04, FreeBSD 7.2
Контактная информация:

Пробую OpenAdmin, нужна помощь

Сообщение greengroon »

Давно искал такую программу для школы. Решил остановиться на OpenAdmin for Schools. Брал тут [url http://richtech.ca/openadmin/[url]. Работает на Perl и требует дополнительных модулей. Пока с этим разобрался пришлось потратить времени. Теперь вроде работает, правда не на 100% :) . Пока имеется 2 вопроса

во-первых, когда я в админской части иду в раздел расписания (Schedule) и пытаюсь начать составлять расписание (Add Timetable Items), кликая по кнопке Continue я получаю страницу с таким сообщением
Schedule Entry

Код: Выделить всё

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'and endrptperiod >= order by description' at line 2

Затем иду смотреть в логи апача (пока тестирую локально), открываю /var/log/apache2/schoolerror-log и читаю следующее

Код: Выделить всё

[Mon May 18 19:34:49 2009] [error] [client 127.0.0.1] DBD::mysql::st execute failed: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'and endrptperiod >=  order by description' at line 2 at /var/www/school/cgi/schedule/schedadd.pl line 121., referer: http://localhost/cgi-bin/schedule/schedadd.pl
[Mon May 18 19:34:49 2009] [error] [client 127.0.0.1] You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'and endrptperiod >=  order by description' at line 2 at /var/www/school/cgi/schedule/schedadd.pl line 122., referer: http://localhost/cgi-bin/schedule/schedadd.pl

Что значит ошибка синтаксиса SQL? Еще смотрю в файл /var/www/school/cgi/schedule/schedadd.pl на строки 122 123

Код: Выделить всё

$sth->execute;
if ( $DBI::errstr ) { print $DBI::errstr; die $DBI::errstr; }

Но пока это не помогает - знаний не хватает :crazy: Помогите

во-вторых с переводом на русский тоже как-то пока не получается, хотя там есь система Translation Tools

Кто-нибудь юзал OpenAdmin?
Какая GNUсная, GNUсная жизнь...
Спасибо сказали:
Аватара пользователя
greengroon
Сообщения: 119
ОС: Ubuntu 9.04, FreeBSD 7.2
Контактная информация:

Re: Пробую OpenAdmin, нужна помощь

Сообщение greengroon »

Погуглив, нашел похожие записи ('and endrptperiod >= order by description') в старой версии программы http://richtech.ca/openadmin/updates/2.25/rptattstudsubj.pl
Типа не хватало двух вопросиков что ли? :rolleyes: Ну я их подставил в /var/www/school/cgi/schedule/schedadd.pl и получилось так

Код: Выделить всё

my $termselect;
{
    my $startterm = $sortedterms[0];
    my $endterm = $sortedterms[-1];
    $termselect = "and startrptperiod <= ? $startterm and endrptperiod >= ? $endterm";

    # print "TS: $termselect  START: $startterm END: $endterm<br>\n";
}


После этого вроде заработало :crazy:

Надо разобраться с переводом. Вы еще не юзаете Open Admin for Schools? ;)
Какая GNUсная, GNUсная жизнь...
Спасибо сказали:
Аватара пользователя
greengroon
Сообщения: 119
ОС: Ubuntu 9.04, FreeBSD 7.2
Контактная информация:

Re: Пробую OpenAdmin, нужна помощь

Сообщение greengroon »

С переводом в openadmin все просто на самом деле. А вот ошибкой синтаксиса я таки не разобрался. Насчет двух вопросиков брехня и тупость. Помогите разобраться с ошибкой.
Какая GNUсная, GNUсная жизнь...
Спасибо сказали:
pcodr
Сообщения: 283
ОС: Debian

Re: Пробую OpenAdmin, нужна помощь

Сообщение pcodr »

В файле school/cgi/schedule/schedadd.pl:

Код: Выделить всё

82: if ( $key =~ m/term(\d*)/ ) {
83:           push @tmp,$1;
84:    }


Вероятнее всего автор openadmin по невнимательности допустил ошибку и должно быть вот так:

Код: Выделить всё

82: if ( $key =~ m/term(\d+)/ ) {
83:           push @tmp,$1;
84:    }


Я списался с автором openadmin по e-mail, сообщил ему об ошибке и предложил данное решение. Автор поблагодарил и пообещал исправить ошибку, а также поделился некоторыми планами по развитию скрипта :)
remote system type is unix
Спасибо сказали:
Аватара пользователя
greengroon
Сообщения: 119
ОС: Ubuntu 9.04, FreeBSD 7.2
Контактная информация:

Re: Пробую OpenAdmin, нужна помощь

Сообщение greengroon »

pcodr писал(а):
22.05.2009 20:17
В файле school/cgi/schedule/schedadd.pl:
Вероятнее всего автор openadmin по невнимательности допустил ошибку и должно быть вот так:

Код: Выделить всё

82: if ( $key =~ m/term(\d+)/ ) {
83:           push @tmp,$1;
84:    }

Спасибо за ответ, но к сожалению мне это не помогло. Та же самая ошибка синтаксиса вылазит. Ошибка пропадает в случае если я комментирую одинарными кавычками:
в файле schedadd.pl было так

Код: Выделить всё

my $termselect;
{
    my $startterm = $sortedterms[0];
    my $endterm = $sortedterms[-1];
    $termselect = "and startrptperiod <= $startterm and endrptperiod >= $endterm";

    # print "TS: $termselect  START: $startterm END: $endterm<br>\n";
}

я помещаю в кавычки так

Код: Выделить всё

my $termselect;
{
    my $startterm = $sortedterms[0];
    my $endterm = $sortedterms[-1];
    $termselect = "and startrptperiod <= $startterm 'and endrptperiod >=' $endterm";

    # print "TS: $termselect  START: $startterm END: $endterm<br>\n";
}

Тогда ошибка пропадает. Однако в выводимом окне в браузере строка Terms (четверти) пустая хотя должны быть 3 четверти. Таким образом не получается добавить предметы в расписание (учебные четверти не выводятся).
Какая GNUсная, GNUсная жизнь...
Спасибо сказали:
pcodr
Сообщения: 283
ОС: Debian

Re: Пробую OpenAdmin, нужна помощь

Сообщение pcodr »

Странно что не помогло.
А кавычки это что то совсем не то.
Поставьте перед этой строкой

Код: Выделить всё

120: $sth = $dbh->prepare("select description, smdesc, subjsec from subject


Следующий код:

Код: Выделить всё

use Data::Dumper; print "<br>-----------------<br><pre>", Dumper($select, $termselect, @tmp), "</pre><br>-------------------";


И покажите что он выводит.
remote system type is unix
Спасибо сказали:
Аватара пользователя
greengroon
Сообщения: 119
ОС: Ubuntu 9.04, FreeBSD 7.2
Контактная информация:

Re: Пробую OpenAdmin, нужна помощь

Сообщение greengroon »

В браузере выводится следующее

Schedule Entry

-----------------

$VAR1 = 'where teacher like \'%(2)%\'';
$VAR2 = 'and startrptperiod <= and endrptperiod >= ';


-------------------You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'and endrptperiod >= order by description' at line 2

В логах апача такое

[Sat May 23 18:55:27 2009] [error] [client 127.0.0.1] DBD::mysql::st execute failed: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'and endrptperiod >= order by description' at line 2 at /var/www/school/cgi/schedule/schedadd.pl line 123., referer: http://localhost/cgi-bin/schedule/schedadd.pl
[Sat May 23 18:55:27 2009] [error] [client 127.0.0.1] You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'and endrptperiod >= order by description' at line 2 at /var/www/school/cgi/schedule/schedadd.pl line 124., referer: http://localhost/cgi-bin/schedule/schedadd.pl
Какая GNUсная, GNUсная жизнь...
Спасибо сказали:
pcodr
Сообщения: 283
ОС: Debian

Re: Пробую OpenAdmin, нужна помощь

Сообщение pcodr »

Видимо массив @tmp что создается на 83 строке совсем пустой. А он в свою очередь зависит от хеша %arr значит проблема с ним.
После строки

Код: Выделить всё

57: my %arr = $q->Vars;

Поместите следующий код:

Код: Выделить всё

use Data::Dumper; print "<br><pre>arr = [", Dumper(%arr), "]</pre><br>";


Вставки из моего прошлого поста уберите и покажите что вывело теперь.
remote system type is unix
Спасибо сказали:
Аватара пользователя
greengroon
Сообщения: 119
ОС: Ubuntu 9.04, FreeBSD 7.2
Контактная информация:

Re: Пробую OpenAdmin, нужна помощь

Сообщение greengroon »

Кликаю на кнопку Add Timetable Items, получаю это screenshot в приложении
Выбираю учителя (еще надо выбрать четверть/ти но они почему то не выводятся) кликаю Continue и получаю это

arr = [$VAR1 = 'grade';
$VAR2 = '';
$VAR3 = 'teacher';
$VAR4 = 'Buchelnikov, Evgeny (2)';
$VAR5 = 'subjectselect';
$VAR6 = '';
]


[ Main | Schedule ]
Schedule Entry
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'and endrptperiod >= order by description' at line 2
Вложения
Screenshot1.jpg
Какая GNUсная, GNUсная жизнь...
Спасибо сказали:
pcodr
Сообщения: 283
ОС: Debian

Re: Пробую OpenAdmin, нужна помощь

Сообщение pcodr »

Думаю вам лучше списаться с автором потому как я уже запутался, тем более у меня нет установленного OpenAdmin. Автор отвечает быстро, я получил ответ примерно через час.
remote system type is unix
Спасибо сказали:
Аватара пользователя
greengroon
Сообщения: 119
ОС: Ubuntu 9.04, FreeBSD 7.2
Контактная информация:

Re: Пробую OpenAdmin, нужна помощь

Сообщение greengroon »

:) По началу он мне тоже быстро отвечал. В последнем письме сказал что проверит код. Надеюсь это не я запутал, а действительно что то с кодом. Хотя с другой стороны демо сайты автора работают ведь нормально. http://bcsa.richtech.ca/schedule.html
:unsure:
Какая GNUсная, GNUсная жизнь...
Спасибо сказали:
Аватара пользователя
greengroon
Сообщения: 119
ОС: Ubuntu 9.04, FreeBSD 7.2
Контактная информация:

Re: Пробую OpenAdmin, нужна помощь

Сообщение greengroon »

Теперь все ясно. Оказывается нужно было кроме прочего внести в список ученика/ов и записать его на предмет. После этого можно вручную составлять расписание и все ОК. Вот ответ разработчика

In order to use the schedule add script, you have to have not only
subjects but also students enrolled in those subjects. The script
looks for terms in the enrolled students subjects.

I have added a warning phrase to the schedadd.pl script about this and
did a small formatting change to the script.

The update is in the updates area for 3.75.

Буду разбираться дальше и попробую перевести на русский

Не перестаю удивляться вашими знаниями, пользователи линукс, разработчики СПО и программисты :)
Спасибо за помощь и с уважением
Какая GNUсная, GNUсная жизнь...
Спасибо сказали:
Аватара пользователя
gcc
Сообщения: 526
ОС: FreeBSD 8.0 CURRENT
Контактная информация:

Re: Пробую OpenAdmin, нужна помощь

Сообщение gcc »

подобную админку можно написать под свои нужны и на пхп, если перл вам сложный.... или GUI
Спасибо сказали:
Ответить