Bug 1633

Summary: КМ-Школа: невозможно зайти в некоторые разделы
Product: Wine School Reporter: Денис Баранов <baraka>
Component: КМ ШколаAssignee: Константин Кондратюк <kondratyuk>
Status: CLOSED FIXED QA Contact:
Severity: normal    
Priority: P5 CC: kondratyuk, lav, vostok
Version: 0.7   
Target Milestone: ---   
Hardware: PC   
OS: Linux   
Whiteboard:
Заявки RT: Связано с:
Дата напоминания:
Bug Depends on: 1844    
Bug Blocks: 2120, 1528, 1632, 2087    

Description Денис Баранов 2008-04-08 21:31:10 MSD
Не заходит туда.
Comment 1 Денис Баранов 2008-04-08 21:53:49 MSD
Так же не заходит в учетке Ученик в Самоподготовку, наверно по одной и той же причине, т.к. разделы там схожие.
Comment 2 Анатолий Лютин 2008-04-30 18:38:00 MSD
На самом деле заходит, но только первый раз и если не были открыты другие разделы, т.е. в моём ww при логировании как учитель появляется белый экран с вкладками (ни одна из них не выбрана) и если сразу нажать на "индивидуальны портфель", то эта вкладка откроется, а если сначала открыть любую другую вкладку, то после этого нажатие на первую не будет иметь эффекта.
Comment 3 Анатолий Лютин 2008-05-03 15:21:32 MSD
И ещё не открывается учитель->методический кабинет
Comment 4 Анатолий Лютин 2008-05-03 16:07:09 MSD
Всё-таки для этого окна mshtml не используется. Но по трассировке похоже, что ошибка в нарушении порядка сообщений (тут используется WM_TIMER, может он обрабатывается некорректно).
Comment 5 Анатолий Лютин 2008-05-03 16:45:42 MSD
Сейчас поставил программу под windows и посмотрел, как она работает. Всё-таки ни в индивидуальный портфель, ни в методический кабинет программа не заходит, при этом, судя по интерфейсу, мет.кабинет должен использовать mshtml.
Comment 6 Анатолий Лютин 2008-05-04 13:17:07 MSD
При этом туда можно зайти через большую кнопку "рабочее место учителя", но в "рвбочее место" всё равно не заходит.
Comment 7 Константин Кондратюк 2008-05-12 13:39:45 MSD
Проблема осталась в новой сборке WINE@Etersoft School, установленной на euclid
Comment 8 Константин Кондратюк 2008-05-12 17:58:56 MSD
*** Bug 1632 has been marked as a duplicate of this bug. ***
Comment 9 Константин Кондратюк 2008-05-12 18:02:44 MSD
*** Bug 1634 has been marked as a duplicate of this bug. ***
Comment 10 Константин Кондратюк 2008-05-12 18:04:45 MSD
Судя по всему, одна и та же ошибка во многих местах КМ-Школы. В том числе, характеризуется таким выводом в консоль при клике на ссылку:

err:ole:CoGetClassObject class {22d6f312-b0f6-11d0-94ab-0080c74c7e95} not
registered
err:ole:create_server class {22d6f312-b0f6-11d0-94ab-0080c74c7e95} not
registered
err:ole:CoGetClassObject no class object {22d6f312-b0f6-11d0-94ab-0080c74c7e95}
could be created for context 0x5
Comment 11 Константин Кондратюк 2008-05-12 18:07:56 MSD
Список неработающих ссылок:

Завуч -> Методическая работа -> Методический кабинет
Учитель -> Классный журнал -> Работы учашихся
Учитель -> Индивидуальный портфель
Ученик -> Самоподготовка
Comment 12 Константин Кондратюк 2008-05-13 09:56:43 MSD
22d6f312-b0f6-11d0-94ab-0080c74c7e95
- это CLSID Windows Media Player 6.4
Comment 13 Vitaly Lipatov 2008-05-13 10:19:40 MSD
Добавил в сборку MDAC 2.8
wine-school-0.2-alt1
Comment 14 Константин Кондратюк 2008-05-13 11:15:47 MSD
После установки WMP9 нужный класс регистрируется. Теперь ошибка:

err:ole:apartment_getclassobject DllGetClassObject returned error 0x8007007e
err:ole:CoGetClassObject no class object {22d6f312-b0f6-11d0-94ab-0080c74c7e95} could be created for context 0x5

Где-то в интернете нашлась заметка про то, что это недоустановленный wmp или проблемы со звуком. Звук в бутылках недоступен, так что вполне может быть нашим случаем.
Comment 15 Константин Кондратюк 2008-05-13 14:02:02 MSD
В моём home (со звуком) wmp выдаёт ошибку при старте и закрывается, а "школа" вообще падает при попытке зайти под учёткой завуча. Пока не понял, связано ли.
Comment 16 Анатолий Лютин 2008-05-15 16:00:53 MSD
(In reply to comment #11)
> Список неработающих ссылок:
> 
> Учитель -> Индивидуальный портфель
> 
Работает, там не работает только ссылка "Рабочие материалы" и "Методический кабинет" не до конца свой интрефейс генерит.


Comment 17 Анатолий Лютин 2008-05-15 16:01:47 MSD
Тем более почему эти ссылки не работают я сейчас это с разработчиком КМ-Школы разбираю...
Comment 18 Константин Кондратюк 2008-05-15 16:06:37 MSD
Это исключение, из-за незарегистрированного медиаплеера. Связь с разработчиком по этому вопросу - очень кстати. В связи с тем, что от wmp мы вынуждены отказаться - работа через мою реализацию wmp.dll.
Comment 19 Анатолий Лютин 2008-05-15 16:08:38 MSD
(In reply to comment #18)
> Это исключение, из-за
> незарегистрированного медиаплеера.
Пока я не вижу того, что там используется именно в этих местах WMP
> Связь
> с разработчиком по этому вопросу - очень
> кстати. 
Я уже спросил про то, что ты тут накопал.

Comment 20 Константин Кондратюк 2008-05-15 16:12:03 MSD
$ ./KMSchool.exe
wmp.dll:DllMain:(10000000, 1, 00000000)
wmp.dll: factory.c: WMP_IClassFactory_QueryInterface
wmp.dll: factory.c: WMP_IClassFactory_AddRef
wmp.dll: factory.c: CreateInstance
wmp.dll: iwmpplayer.c: Constructor  (00000000,0033FDF0)
wmp.dll: iwmplayer.c:QueryInterface
wmp.dll: tool.c:inner_QueryInterface - create IWMPPlayer
wmp.dll: iwmpplayer.c: AddRef REF = 0
wmp.dll: factory.c: WMP_IClassFactory_Release
wmp.dll: iwmplayer.c:QueryInterface
wmp.dll: tool.c:inner_QueryInterface - create IWMPCore
...

+ см. комментарий #12
Comment 21 Константин Кондратюк 2008-05-15 16:14:47 MSD
Сейчас меня больше всего интересует работа с IOleObject и IOleClientSite, вернее взаимодействие их в dll и в программе.
Comment 22 Анатолий Лютин 2008-05-15 16:15:20 MSD
(In reply to comment #20)
> $ ./KMSchool.exe
> wmp.dll:DllMain:(10000000, 1, 00000000)
> wmp.dll: factory.c: WMP_IClassFactory_QueryInterface
> wmp.dll: factory.c: WMP_IClassFactory_AddRef
> wmp.dll: factory.c: CreateInstance
> wmp.dll: iwmpplayer.c: Constructor  (00000000,0033FDF0)
> wmp.dll: iwmplayer.c:QueryInterface
> wmp.dll: tool.c:inner_QueryInterface - create IWMPPlayer
> wmp.dll: iwmpplayer.c: AddRef REF = 0
> wmp.dll: factory.c: WMP_IClassFactory_Release
> wmp.dll: iwmplayer.c:QueryInterface
> wmp.dll: tool.c:inner_QueryInterface - create IWMPCore
> ...
> 
> + см. комментарий #12
> 

Это не говорит о том, что в данных разделах используется медиа плеер. Создаётся - да, но не через него неработающие контролы отображаются в метадическом кабинете - это точно. Тем более всегда можно зайти клиентом с винды и убедиться, что во многих вкладках, что не работают, с помощью WMP ничего не отображается.
Comment 23 Анатолий Лютин 2008-05-15 16:17:24 MSD
(In reply to comment #21)
> Сейчас меня больше всего интересует работа
> с IOleObject и IOleClientSite, вернее взаимодействие их
> в dll и в программе.
Как я понимаю, с помощью вызова IOleClientSite можно вставить окно проигрывателя в стандартный контрол, но я такого в КМ-Школе не видел... С учётом того, что я не знаю OLE, этот комментарий больше информационный.
Comment 24 Константин Кондратюк 2008-05-15 16:21:13 MSD
Связь с плеером очевидна. Для чего он нужен - другой вопрос, это тоже хочется узнать. Может быть, имеет смысл просто мне пообщаться напрямую по этой баге?
Comment 25 Анатолий Лютин 2008-05-15 16:23:21 MSD
(In reply to comment #24)
> Связь с плеером очевидна.
Мне она пока совсем не очевидна. С таким же успехом можно JVM вызывать, просто так, чтобы было. 
> Может быть, имеет смысл просто мне
> пообщаться напрямую по этой баге?
Сомневаюсь, что есть смысл вдвоём грузить человека, тем более я про это замечание спросил его уже.

Ответ я обязательно приложу к баге.

Comment 26 Vitaly Lipatov 2008-05-15 18:17:31 MSD
Убедительная просьба ко всем - переписку с разработчиками перекладывать в соответствующие папки в почте.
Comment 27 Константин Кондратюк 2008-05-15 20:35:31 MSD
По возможности, мне нужен кусок кода, отвечающий за инициализацию движка WMP при загрузке модуля, например, "Учитель" или "Завуч". Или хотя бы информация, каким образом эта инициализация устроена, и через какие методы интерфейсов.
Хотя если это delphi - скорее всего стандартно вставлен объект проигрывателя, что впрочем тоже не работает... Но хочется решать всё-таки конкретную проблему, а не абстрактный плеер.
Comment 28 Анатолий Лютин 2008-05-15 20:36:41 MSD
(In reply to comment #27)
> По возможности, мне нужен кусок кода,
> отвечающий за инициализацию движка WMP при
> загрузке модуля, например, "Учитель" или
> "Завуч". Или хотя бы информация, каким
> образом эта инициализация устроена, и
> через какие методы интерфейсов.
> Хотя если это delphi - скорее всего стандартно
> вставлен объект проигрывателя, что впрочем
> тоже не работает... Но хочется решать
> всё-таки конкретную проблему, а не
> абстрактный плеер.
> 

Гениально, как ты мог видеть из переписки мне нужны такие же куски, но пока мне их предоставлять не хотят.
Comment 29 Анатолий Лютин 2008-05-16 14:28:47 MSD
(In reply to comment #24)
> Связь с плеером очевидна. Для чего он нужен
> - другой вопрос, это тоже хочется узнать.
> Может быть, имеет смысл просто мне
> пообщаться напрямую по этой баге?
> 

В общем моя лажа. Специалист подтвердил, что весь косяк в WMP. В нём причина.

Специалиста зовут Сергей, эл. почта doroshin@km-school.ru

Удачи! :) Постараюсь больше так не лажаться.
Comment 30 Vitaly Lipatov 2008-06-16 18:42:45 MSD
Зависит от реализации WMP-плейера.
Comment 31 Константин Кондратюк 2008-06-18 17:50:04 MSD
С текущим состоянием реализации - вкладки открываются. Осталось добавить в сборку, ну и доделать функциональность в соответствии с багой #1844.
Comment 32 Денис Баранов 2008-06-23 15:06:56 MSD
Вкладки открываются, так что багу закрываю.