Chat Smartlet SXML
Release 1.1 - ...
Smartsite SXML | Copy Code |
---|---|
<se:smartlet> <se:parameters> <se:parameter name="properties"><se:collection> <se:member name="allowanonymous" type="boolean" editable="true" callbackaccess="read" clientaccess="read">false</se:member> <se:member name="data" callbackaccess="write" clientaccess="read" /> <se:member name="phrase" callbackaccess="read" clientaccess="readwrite"></se:member> <se:member name="sysmsg" type="boolean" callbackaccess="read" clientaccess="readwrite">false</se:member> <se:member name="index" type="integer" callbackaccess="readwrite" clientaccess="readwrite">0</se:member> <se:member name="legend">Chat Room</se:member> <se:member name="refreshinterval" type="integer" >5000</se:member> <se:member name="confirmclear" type="boolean" >false</se:member> <se:member name="confirmclearmessage" type="string" >Clear the chat window?</se:member> <se:member name="joinmessage" type="string">Entered this chat room...</se:member> <se:member name="createmessage" type="string">Started new chat...</se:member> <se:member name="mode" type="string" clientaccess="write" callbackaccess="read" /> </se:collection></se:parameter> <se:parameter name="xml"> <se:cache save="key = this.getcachekey()" maxage="00:30:00" resulttype="none" trim="both" keydependencies="{smartlet.id()}"> <se:placeholder localid="chat" render="false" default="{scope.chat.data()}"> <se:parameters> <se:parameter name="fieldnames"><se:collection> <se:member name="Nr" type="integer" primarykey="true" /> <se:member name="Created" type="datetime" /> <se:member name="User" type="string" /> <se:member name="Text" type="string" /> <se:member name="SystemMsg" type="boolean" /> </se:collection></se:parameter> </se:parameters> </se:placeholder> </se:cache> {buffer.set(chat, cache.get($key))} <se:if expression="smartlet.isajaxcallback()"> <se:then> {sys.iif(user.isanonymous() AND !smartlet.get(allowanonymous), sys.throwexception(NotAuthorized, 'You must be logged in to chat.'))} <se:if expression="string.trim(smartlet.get(phrase, default=''))!=''"> {datatable.rows.add($chat, datatable.rows.count($chat)+1, datetime.now(), user.fullname(), smartlet.get(phrase), smartlet.get(sysmsg))}); </se:if> {buffer.set(newdata, datatable.search($chat, "Nr " + char.gt() + smartlet.get(index)))} <!--// search for new records --> <se:format save="data" inputdata="newdata" whitespace="remove"> <se:rowformat> <div class="{string.concat('Row ', sys.iif(this.field(5), 'SysMsg', ''))}"> <span class="Added">{locale.formatdatetimecustom(this.field(2), 'HH:mm:ss')}</span> <span class="User">{this.field(3)}</span> <span class="Text">{this.field(4)}</span> </div> {smartlet.set(index, this.field(1))} </se:rowformat> <se:resultformat> {smartlet.set(data, this.result())} </se:resultformat> </se:format> </se:then> <se:else> {buffer.set(count, datatable.rows.count($chat))} {buffer.set(firstpost, datatable.findone($chat, "User='" + user.fullname() + "'"))} {smartlet.behavior.attach(smartlet.idselector(), smartlet.name(Behavior), isAnonymous, scf.clientvar(user.isanonymous()), userName, user.fullname(), joinMessage, smartlet.get(joinmessage), createMessage, smartlet.get(createmessage), allowAnonymous, smartlet.get(allowanonymous), refreshInterval, smartlet.get(refreshinterval), confirmClear, smartlet.get(confirmclear), confirmClearMessage, smartlet.get(confirmclearmessage), firstPost, $firstpost, count, $count )} <se:smartletbox caption="{smartlet.get(legend)}: {user.fullname()}" innerclass="{smartlet.get(mode)}" trim="both" whitespace="normalize"> <form action="{smartlet.link()}" class="CoolForm" id="{smartlet.id(form)}" method="post"> <div> <label class="Control" for="{smartlet.id(history)}">Conversation</label> <div class="Control ChatHistory" id="{smartlet.id(history)}"> <se:if expression="user.isanonymous() AND !smartlet.get(allowanonymous)"> You must be logged in to chat... </se:if> </div> <br /> <label class="Control" for="{smartlet.id(speak)}">Speak up</label> <input size="70" class="Control Speak" name="{smartlet.id(speak)}" id="{smartlet.id(speak)}" /> <br /><label></label> <input class="Control Send" type="submit" id="{smartlet.id(send)}" value="Refresh" /> <input class="Control Clear" type="submit" id="{smartlet.id(clear)}" value="Clear" /> </div> </form> </se:smartletbox> </se:else> </se:if> </se:parameter> </se:parameters> </se:smartlet> |