none
Как закрепить, панель-ленту, чтоб не прокручивалась? RRS feed

  • Вопрос

  • Собственно с измененеием интерфеса Sharepoint столкнулся недавно, поэтому и вопрос.

    Необходимо закрепить панель, которая отображается сверху при нажатии кнопки "Обзор/Browse" (там отображается лого сайта и аля "хлебные крошки") от прокручивания. Чтоб эта панель  не прокуручивалась так же как и при нажатии кнопки "Страница/Page" или что-то похожее сделать?

    Может решения сразу не подскажите хоть подскажите куда копать. Пытался дивы и css мастерпэдж посмотреть но ничего не нашел.

    Заранее спасибо за ответы.


    Aleksandr Shramko

    9 февраля 2012 г. 16:15

Ответы

  • Скорее всего вы поменяли данный код в файле INIT.debug.js, а режим компиляции вашего веб-приложения установлен в Release, поэтому SharePoint вместо этого скрипта подключает INIT.js.

    Попробуйте сменить режим компиляции на DEBUG: Диспетчер служб IIS - Выберите веб-приложение - Компиляция .NET - отладка - true. После этого SharePoint должен подключить ваш изменный файл, и все должно быть ок.

    Думаю будет более правильно написать скрипт как-то так:

    var newWorkspaceHeight = vph - elmRibbon.offsetHeight - AbsTop(elmRibbon) - document.getElementById("s4-titlerow").offsetHeight;

    Если все будет работать - можете вносить изменения в INIT.js и переключать режим отладки в false. Но тут не все так просто, ибо INIT.js упакован и найти нужную строку не так то легко :). Она выглядит примерно так:

    var e=d-b.offsetHeight-AbsTop(b);if(e<0)e=0;a.style.height=e+"px";

    • Помечено в качестве ответа Aleksandr Shramko 15 февраля 2012 г. 10:49
    14 февраля 2012 г. 7:15

Все ответы

  • Попробуйте открыть через SPD страницу v4.master, найти в коде CSS-класс, описывающий DIV ленты и с помощью комбинации Ctrl+LMB перейти на этот класс в corev4.css. По умолчанию corev4.css где-то скрыта, но после редактирования становится доступна. После применения изменений необходимо прикрутить таблицу стилей к семейству сайтов и обновить наследование на семейство сайтов. Попробуйте, должно получится!
    10 февраля 2012 г. 5:56
  • Джеймс спасибо. Я уже редактировал указанный css. но в нем не нашел как заставить ленту не прокручиваться. Я склоняюсь к мнению что надо aspx редактировать. Так ли это или все же css рыть?


    Aleksandr Shramko

    10 февраля 2012 г. 7:24
  • Попробуйте все же порыть CSS. Обязательно убедитесь в том, что изменения, которые вы делаете сохраняются и отображаются, дело в том, что тут мб проблемы с прикруткой.

    Ведь, на сколько я помню, поведение блоков и их отображение определяется в CSS.

    Удачи!

    10 февраля 2012 г. 8:18
  • нашел, способ закрепить панель в отдельном слое сразу под лентой, но есть один глюк: сместился в низ слой в котором отображается контент и конец скрола тоже "ушел" в низ. Уже 6 часов убил на поиски решения и никак, куда копать?


    Aleksandr Shramko

    10 февраля 2012 г. 15:58
  • Это связано с тем, что скрипт SharePoint пересчитывает при загрузке страницы (ровно как и при изменении) высоту и ширину дива "s4-workspace" (<div id="s4-workspace">...</div>, контент которого скролится) на вашей странице. Высоту он высчитывает следующим образом:

    высота окна - высота риббона - отступ сверху у риббона;

    Теперь когда вы вынесли шапку из дива "s4-workspace", то эту формулу надо изменить, т.к. высота теперь больше, чем нужна на высоту вашей шапки:

    высота окна - высота риббона - высота шапки - отступ сверху у риббона.

    Данный скрипт находится в файлике init.js или init.debug.js (в зав-сти от режима компиляции ващего веб-приложения), которые находятся в 14 Hive. Измените формулу расчете и все будет ок, но следует иметь ввиду, что если вы решили обновить SP (поставить CU или SP) есть вероятность что эти скрипты обновятся и вы столкнетесь в этой проблемой вновь, и менять скрипт придется повторно.

    Строка расчета выглядит примерно так:

    var newWorkspaceHeight=vph-elmRibbon.offsetHeight-AbsTop(elmRibbon);

    PS: не забудьте перезапустить пул, после внесения измнений, т.к. их содержимое кешируется.
    • Изменено Bukharin V 11 февраля 2012 г. 16:15
    11 февраля 2012 г. 16:13
  • Bukharin V, спасибо. Нашел то что выкомендовали но незнаю что изменить (не имею опыта работы с javascript). Ниже код, я поставил -50, я правильно сделал? рестартанул пул, но результат тот же, может я неправильно что-то изменил?

    	var newWorkspaceHeight=vph - elmRibbon.offsetHeight - AbsTop(elmRibbon) - 50;
    	if(newWorkspaceHeight < 0)
    		newWorkspaceHeight=0;
    	elmWorkspace.style.height=(newWorkspaceHeight)+"px";


    Aleksandr Shramko

    13 февраля 2012 г. 8:09
  • Скорее всего вы поменяли данный код в файле INIT.debug.js, а режим компиляции вашего веб-приложения установлен в Release, поэтому SharePoint вместо этого скрипта подключает INIT.js.

    Попробуйте сменить режим компиляции на DEBUG: Диспетчер служб IIS - Выберите веб-приложение - Компиляция .NET - отладка - true. После этого SharePoint должен подключить ваш изменный файл, и все должно быть ок.

    Думаю будет более правильно написать скрипт как-то так:

    var newWorkspaceHeight = vph - elmRibbon.offsetHeight - AbsTop(elmRibbon) - document.getElementById("s4-titlerow").offsetHeight;

    Если все будет работать - можете вносить изменения в INIT.js и переключать режим отладки в false. Но тут не все так просто, ибо INIT.js упакован и найти нужную строку не так то легко :). Она выглядит примерно так:

    var e=d-b.offsetHeight-AbsTop(b);if(e<0)e=0;a.style.height=e+"px";

    • Помечено в качестве ответа Aleksandr Shramko 15 февраля 2012 г. 10:49
    14 февраля 2012 г. 7:15
  • Bukharin V, огромное спасибо!!! Подскажите еще пожалуйста как мне поменять формулу во втором случае так чтоб она была такая же красивая как и в первом?

    Aleksandr Shramko

    14 февраля 2012 г. 10:23
  • var e=d-b.offsetHeight-AbsTop(b) - document.getElementById("s4-titlerow").offsetHeight;
    15 февраля 2012 г. 3:24