kernel panic in userspace

my own self destruction
  • Blog
  • about
  • articles
    • Virtualbox bridge
    • linux blogging
    • Gentoo on Acer Extensa 5630Z
  • code
    • @unfollowr
    • WordPress
      • WordPress-bbPress syncronization
      • IE Warning
      • PostAds
    • Callisto overlay
    • @listwatcher
  • CV
  • belarusian
  • russian
  • english

jLanguage javascript tweaks

Jul 27 2009
Club Des Belugas – Unsaleble Strings
  • belarusian
  • russian

Ня так даўно камрад tridento ухваляў мой маленькі блог-запаведнік, схіляючыся да таго, што не было б лішнім прыкруціць фішку, каб у пастоў паштучна зьмяняць мову. Бяссоньніца бярэ сваё, так што я узяўся за такі непад’ёмны труд. Адразу варта прызнацца, зрабіў я не адзіным правільным метадам, у якога ёсьць свае недахопы. Адразу скажу, што гэта толькі няпоўна рэалізаваны канцэпт :)

Сама штука ў тым, каю кожны раз не лезьці пры зьмене мовы паста на сэрвер, напружваючы і без таго няшчасную базу. Пры запампоўцы старонкі карыстач атрымлівае ўсе магчымыя мовы для кожнага запісу і пераключае па меры неабходнасьці. Больш-менш сур’ёзных падстаў для шэтага я ня бачу, ну й ладна, карыстач нешта зараз пайшоў спакушаны.

Тэхнічны бок. У кожным пасьце ў div-кантэйнеры ёсьць некалькі нашчадкаў для кожнай мовы. Пры аддачы старонкі адразу вырашаецца, які div будзе бачны, астатнія хаваюцца, каб не псаваць выгляд. Пераключэньне адбываецца пры націсканьні піктаграмкі флагаў краін у пачатку паста. Пераключаем прыгожа, выкарыстоўваючы за нейкім фігам да мяне да тэмы js scriptaculous. Код, які выконваецца пры націсканьні, выглядае прыкладна наступным чынам:

<img onClick="Hide('post-611-belarusian');Hide('post-611-russian'); Show('post-611-belarusian')" alt="belarusian" src="http://bobrik.name/blog/wp-content/plugins/jLanguage/icons/be.png" />

Javascript:

function $(id)
{
  return document.getElementById(id);
}

function Hide(id)
{
  if ($(id).style.display != 'none')
  {
    // дзіўнае атрыманьне і устаноўка мінімальнай высаты, каб не было дужа моцных «прыжкоў»
    $(id).parentNode.style.minHeight = $(id).parentNode.offsetHeight+"px";
  }
  $(id).style.display='none';
}

function Show(id)
{
  Effect.toggle($(id), 'appear'); // script.aculo.us эфект
  $(id).parentNode.style.height = '';
}

У поўнай меры вызваліцца ад «прыжков» текста запісу не атрымалася, але ўсё паправіма тым жа JS фрэймворкам, проста робім плаўную зьмену высаты. Я зраблю як-небудзь, як будзе вольны час, а вы таксама патрэніруйцеся, хатняе заданьне, так сказаць.

Фішкі й плюшкі: у RSS стужку павінен дасылацца толькі адзін тэкст на адной мове, дзеля гэтага я некалькі стужак і ствараў. Напэўна варта яшчэ сьцяжкі прыбыраць, бо каго яны турбуюць, калі чалавек запытвае канкрэтную денту? Яшчэ дадаў у мэню спасылкі дзеля зьмены мовы глябальна, пасьля чаго прыйшлося пералапаціць скрыпт, які зьмяняе ўсе ўнутраные спасылкі на старонцы на спасылкі з указаньнем пераважнай мовы.

P.s.: опыту працы з js у мяне ноль, але па ходу вельмі спадабаліся некаторыя клёвыя мета-штукі, трэба было б азнаёміцца больш плотна
P.p.s.: уся шматмознасьць на шматразова хакнутым jLanguage
P.p.p.s.: развучыўся я зусім з пісаць з гэтым твітэрам

Обновления программ – весьма актуальная для Windows тема

Бесплатные программы – тоже будет полезно

Buy viagra online – прямо как в детстве, правда? :)

  • belarusian
  • russian

Намедни камрад tridento изволил хвалить мой маленький блог-заповедник, намекая на то, что не мешало бы прикрутить рюшечку, чтобы у постов поштучно менять язык. Бессонница берёт своё, так что я взялся за такой непосильный труд. Сразу стоит признаться, сделал я не единственно правильным способом, у которого есть свои недостатки. Сразу скажу, что это только неполностью реализованный концепт :)

Собственно, штука в том, чтобы не лезть каждый раз при смене языка поста на сервер, нещадно тягая и без того несчастную базу. При загрузке страницы пользователь получает все возможные языки для каждой записи и переключает по мере необходимости. Более-менее серьёзных обоснований для этого я не вижу, ну да ладно, пользователь нынче пошёл искушённый.

Техническая сторона. В каждом посте в div-контейнере есть несколько дочерних для каждого языка. При отдаче страницы сразу решается, какой div будет виден, остальные скрываются, дабы не портить картину. Переключение происходит при нажатии на пиктограммки флагов стран в начале поста. Переключаем красиво, используя зачем-то подключенный до меня к теме js scriptaculous. Код, выполняющийся по нажатию выглядит примерно следующим образом:

<img onClick="Hide('post-611-belarusian');Hide('post-611-russian'); Show('post-611-belarusian')" alt="belarusian" src="http://bobrik.name/blog/wp-content/plugins/jLanguage/icons/be.png" />

Javascript:

function $(id)
{
  return document.getElementById(id);
}

function Hide(id)
{
  if ($(id).style.display != 'none')
  {
    // чудное получение и установка минимальной высоты, чтобы не было «прыжков» сильных
    $(id).parentNode.style.minHeight = $(id).parentNode.offsetHeight+"px";
  }
  $(id).style.display='none';
}

function Show(id)
{
  Effect.toggle($(id), 'appear'); // script.aculo.us эффект
  $(id).parentNode.style.height = '';
}

В полной мере избавиться от «прыжков» текста записи не удалось, но всё поправимо всё тем же JS фреймворком, просто делаем плавное изменение высоты. Я сделаю как-нибудь на досуге, а вы тоже потренируйтесь, домашнее задание, так сказать.

Рюшечки и напильнички: в RSS ленту должен отправляться один единственный текст на одном языке, не зря несколько лент существует. Наверное стоит ещё убирать флажки, ведь кого они волнуют, если человек запрашивает конкретную ленту? Ещё добавил в меню ссылки для изменения языка глобально, после чего пришлось перелопатить скрипт, изменяющий все внутренние ссылки на странице на ссылки с указанием предпочитаемого языка.

P.s.: опыта работы с js у меня ноль, но в ходе ковыряния очень понравились некоторые крутые мета-штуки, надо бы ознакомиться плотнее
P.p.s.: вся многоязычность на многократно хакнутом jLanguage
P.p.p.s.: ох и разучился я писать нормальные тексты с этим твиттером

Обновления программ – весьма актуальная для Windows тема

Бесплатные программы – тоже будет полезно

Buy viagra online – прямо как в детстве, правда? :)

« callisto overlay changes Open source development »

Tags
blog, concept, div height, javascript, jLanguage, js, multilanguage, scriptaculous, twitter
Categories
Belarusian, Runix, Russian
Meta
Subscribe [ru] Subscribe [be] Comments rss Trackback
Similar
twitter & jLanguage fix | multilanguage wordpress + jLanguage hacking | Hide Mentions in Twitter Web Interface | jQuery val() & change() tricks | i hate wp plugins developers

4 responses to “jLanguage javascript tweaks”

Oct 21 2009
Бирюков Павел (00:24:01) :

Мультиязычный блог — это пиздец. Прошу прощения, если что.
Никак не могу понять необходимости. Что заставляет людей этим заниматься?

ps. Мое мыло не влазит в отведенное для него поле. Обидно как-то.

Oct 21 2009
bobrik (01:36:26) :

Я вот тоже так считаю, если что. Поле для e-mail как-нибудь растяну, пока уж терпеть придётся

Dec 22 2009
Дмитрий (17:41:48) :

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

Dec 26 2009
bobrik (14:33:59) :

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

Leave a comment

You can use these tags : <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>


RSS antisocial feeling

  • Ворачиваться в страну шпрот собираешься?
  • (via priskorbno) хочу. давно хотел. где купить?
  • ??
  • "((foldl (+) 0 [1..100]) ^ 2) - (foldl (+) 0 (map (^ 2) [1..100]))"
  • ?

Tags

bash belarus blog blogs bugs coding concerts download friends fun gentoo google images internet javascript kde language life links linux livejournal me money music overlays perl photos php plugins portage projects rss school shell social social networks ssh studying tests twitter ubuntu univer vkontakte wifi wordpress

links

  • asocial feeling
  • Callisto overlay
  • daThumbs
  • last.fm
  • twitter
  • Vkontakte
  • ~idioteque

Recent Comments

  • bobrik on @listwatcher
  • Process_of_illumination on WordPress-bbPress syncronization
  • Process_of_illumination on WordPress-bbPress syncronization
  • Aviva Gabriel on @listwatcher
  • Aviva Gabriel on @listwatcher
  • Larry D. Halstead on @listwatcher
  • neagaoleg on Hide Mentions in Twitter Web Interface
  • neagaoleg on about
  • Martina Bella on @unfollowr
  • gamersroute.com on WordPress-bbPress syncronization

Archives

  • January 2010 (1)
  • November 2009 (2)
  • October 2009 (5)
  • September 2009 (2)
  • August 2009 (2)
  • July 2009 (3)
  • June 2009 (1)
  • April 2009 (2)
  • March 2009 (1)
  • February 2009 (1)
  • January 2009 (2)
  • December 2008 (12)
  • November 2008 (17)
  • October 2008 (20)
  • September 2008 (13)
  • August 2008 (25)
  • July 2008 (18)
  • June 2008 (15)
  • May 2008 (7)
  • March 2008 (1)
  • February 2008 (9)
  • January 2008 (11)
  • December 2007 (24)
  • November 2007 (27)
  • October 2007 (21)

Meta

  • Log in
  • Entries RSS
  • Comments RSS
  • WordPress.org

Creative Commons License rss comments rss valid xhtml