динамический javascript материал
если я прав, такой же сценарий вы получите и для таких вещей, как кнопки ретвита. (это то, что у меня есть под рукой, чтобы предоставить вам примеры).
What I did in my blog is a little specialized seaside component named BITRetweet that you configure with the permalink (and username and style preference). Forget the files stuff (that will only complicate things), everything is on the fly. It renders with this:
BITRetweet>>renderContentOn: html
html script with: self customizedJavascript.
html script url: self buttonJavascriptSource.
BITRetweet>>customizedJavascript
| script |
script := JSScript new.
script add: (('"',self permalink,'"') asJSObject assignTo: 'tweetmeme_url').
isCompact ifTrue:[
script add: ('"compact"' asJSObject assignTo: 'tweetmeme_style')].
script add: (('"',username,'"') asJSObject assignTo: 'tweetmeme_source').
script add: (('"',shortener,'"') asJSObject assignTo: 'tweetmeme_service').
^ script
BITRретвит>>>buttonJavascriptSource
"Answers the url to the source of the script for the button.
See:
http://help.tweetmeme.com/2009/04/06/tweetmeme-button/"
^ 'http://tweetmeme.com/i/scripts/button.js'
и, наконец, небольшой хак для String, например:
Строка>>какJSObject
^ JSObject new alias: self
код>
работа с постоянными ссылками
для части постоянных ссылок есть две вещи:
- создание его
- используя его (заставляя приложение реагировать, когда запрос приходит с ним)
для 1 вы можете сделать что-то вроде этого:
PostComponent>>updateUrl: anUrl
super updateUrl: anUrl.
anUrl addToPath: model asURLNice
Post>>asURLNice
"Answers the receiver in an (destructive) encoded
way which is url friendly"
^ String streamContents: [:stream|
self do:[:char|
char isSeparator
ifTrue:[stream nextPut: $-]
ifFalse:[
char isAlphaNumeric ifTrue:[
stream nextPut: char asLowercase asNonDiacritical]]]]
код>
and for 2 you have to do something like this in your main application component:
BlogApplication>>initialRequest: aRequestOrNil
| paths |
super initialRequest: aRequestOrNil.
aRequestOrNil ifNil:[^ nil].
(aRequestOrNil url asString endsWith: '/sitemap.xml') ifTrue:[
^ self respondSitemap].
paths := aRequestOrNil url path.
paths size < 2 ifTrue:[^nil].
(Post atURLTitle: paths last) ifNotNilDo: [:value |
^ self readPost: value].
живые примеры
Вы можете увидеть все это в действии в моем блоге или в выборочное творчество asNonDiacritical необходим мне, потому что я веду блог на трех языках, но DiacriticalSupport доступен в squeaksource а> если вам это нужно
получайте удовольствие от взлома
o/
person
Sebastian Sastre
schedule
06.02.2011