📄 template.java
字号:
StringBuffer currPlaceHolder = new StringBuffer(),
currPart = new StringBuffer();
while (tok.hasMoreElements()) {
String curr = tok.nextToken();
if (curr.equals("<")) {
if (lt)
currPart.append("<");
else
lt=true;
} else if (lt && curr.equals("%")) {
placeholder=true;
currPlaceHolder.append("#");
while (placeholder) {
curr=tok.nextToken();
if (curr.equals("%")) {
curr = tok.nextToken();
if (curr.equals(">")) {
placeholder=false;
lt=false;
} else {
currPlaceHolder.append("%");
currPlaceHolder.append(curr);
}
} else {
currPlaceHolder.append(curr.trim());
}
}
String cplh = currPlaceHolder.toString();
lt=false;
currPlaceHolder = new StringBuffer();
if (cplh.equals("#active_users")) {
this.dependsOn = this.dependsOn
| Template.DEPENDS_ON_USER_COUNT;
} else if (cplh.equals("#active_user_list")) {
this.dependsOn = this.dependsOn
| Template.DEPENDS_ON_GROUP_LIST;
} else if (cplh.startsWith("#users_in_group")
|| cplh.equals("#token")) {
this.dependsOn = this.dependsOn
| Template.DEPENDS_ON_SESSION;
} else if (cplh.equals("#open_groups")) {
this.dependsOn = this.dependsOn
| Template.DEPENDS_ON_GROUP_COUNT;
} else if (cplh.equals("#selve")) {
this.dependsOn = this.dependsOn
| Template.DEPENDS_ON_SERVER_CONFIG;
} else if (cplh.startsWith("#config")) {
// any kind of <% #config.XX %> property
this.dependsOn = this.dependsOn
| Template.DEPENDS_ON_SERVER_CONFIG;
}
if (cplh.toLowerCase().equals("#version")) {
currPart.append(Server.getVersion());
} else {
t.addElement(currPart.toString());
t.addElement(cplh);
currPart = new StringBuffer();
}
} else if (lt) {
currPart.append("<");
currPart.append(curr);
lt = false;
} else {
currPart.append(curr);
}
}
if (currPart.length()>0) {
t.addElement(currPart.toString());
}
if (currPlaceHolder.length()>0) {
t.addElement(currPlaceHolder.toString());
}
/*
String parts[] = raw.split("<%");
for (int i = 0; i < parts.length; i++) {
String sub[] = parts[i].split ("%>");
if (sub.length == 1) {
t.addElement(sub[0]);
continue;
} if (sub.length > 2) {
StringBuffer tsb = new StringBuffer ("error parsing template ");
tsb.append (tsName).append ("/").append (tpl.getName ());
Server.log(this, tsb.toString (), Server.MSG_ERROR, Server.LVL_MAJOR);
return(null);
}
StringBuffer tsb = new StringBuffer ("#").append (sub[0].trim ().toLowerCase ());
t.addElement(tsb.toString ());
t.addElement(sub[1]);
} */
return((String[]) t.toArray(new String[0]));
}
public String generateUserList (IRequest req) {
String strg = req.getValue("user");
Group g = null;
if (strg==null)
strg = req.getValue("group");
else {
User u = UserManager.mgr.getUserByName(strg);
if (u==null)
return "no such user: " + strg;
}
MessageState msgState = new MessageState(null);
if (strg==null) {
strg = req.getCookie();
if (strg == null)
return "no cookie to get a user for";
User u = UserManager.mgr.getUserByCookie(strg);
if (u == null)
return "no user to generate userlist for";
msgState.sender = u;
g = u.getGroup();
}
if (g==null) {
g = GroupManager.mgr.getGroup(strg);
}
if (g==null)
return ("unable to determine group");
msgState.message = generateUserList (msgState, g);
return MessageRenderer.renderTemplate(msgState, ts.getMessageTemplate("list.users"));
}
public String generateUserList (MessageState msgState, Group cg) {
msgState.sourceGroup=cg;
msgState.targetGroup=cg;
return ((AbstractCommand) CommandSet.getCommandSet().getCommand("/wc")).generateUserList(msgState, true, ts);
}
public String generateUserList () {
CommandSet cs = CommandSet.getCommandSet();
MessageState msgState = new MessageState(null);
msgState.useRenderCache = false;
UserManager umgr = UserManager.mgr;
StringBuffer sb = new StringBuffer();
Group[] grps = GroupManager.mgr.currentGroupList();
for (int i = 0; i < grps.length; i++) {
Group g = grps[i];
if (g.size() < 1 || !g.isValid())
continue;
msgState.message = generateUserList(msgState, g);
sb.append (MessageRenderer.renderTemplate(msgState, ts.getMessageTemplate("list.users")));
}
return sb.toString();
}
/* INTERFACE RELOADABLE */
public long lastModified () {
return lastModified;
}
public void changed () {
try {
parts = parseFile(template);
Server.log (this, "reload: reloaded template", Server.MSG_STATE, Server.LVL_MINOR);
lastModified = template.lastModified ();
} catch (Exception e) {
Server.debug (this, "reload: ", e, Server.MSG_ERROR, Server.LVL_MAJOR);
}
}
public void removed () {
ts.removeTemplate(this);
tplPresent=false;
}
public boolean filePresent () {
return tplPresent;
}
public void created() {
changed();
ts.addTemplate(this);
tplPresent=true;
}
public File getFile () {
return template;
}
public String getEtag() {
return eTag;
}
private volatile String strgVal;
public String toString() {
if (strgVal==null) {
StringBuffer sb = new StringBuffer ("[Template: ");
sb.append (tsName);
sb.append ("/");
sb.append (name);
sb.append ("]");
strgVal = sb.toString();
}
return strgVal;
}
/**
* @return
*/
public boolean notCacheable() {
if ((dependsOn & (DEPENDS_ON_SESSION
| DEPENDS_ON_GROUP_LIST)) != 0)
return true;
return false;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -