@verb #84:"tell_www_page" this none this rxdo #789
@program #84:"tell_www_page" this none this
player:isa($webber) && caller == $www || raise(E_PERM)
set_task_perms(player.user)
{?object = #-1} = args
if (!valid(object))
return pass(@args)
endif
$www.error:OK("Cache-Control: no-cache")
url = $www:find_ref(object)
prepstr = $string_utils:substitute(prepstr, $www.subst)
edit = 0
for x in [1..length(prepstr)]
if (!(prepstr[x] in {".", ":", "!", ",", ";"}))
edit = 1
break x
endif
endfor
player:tell("
", $name, ": ", edit ? "Edit " | "Examine ", object.name, " (", object, ")")
if (edit)
player:tell("View/Edit ", object, "", $html_utils:literal_text(prepstr), "
")
if (prepstr[1] == "." || prepstr[1] == ",")
this:edit_prop(prepstr[2..$], object)
elseif (prepstr[1] == ":" || prepstr[1] == ";")
this:edit_verb(prepstr[2..$], object)
elseif (prepstr[1] == "!")
this:edit_file(prepstr[2..$], object)
endif
else
if (player.referer && $www:previous_object() != object && iobjstr)
"We have an unknown form refering an chmod/chown to us."
$msg:mtell("www_error", "Warning! Previous page doesn't appear to be this one!")
player:tell("For security reasons the chmod or chown will not be made. Refering page: [", player.referer, "]")
elseif ($www:parse_POST("chmod"))
player.user:controls(object) || raise(E_PERM)
object.r = !!$www:parse_POST("r")
object.w = !!$www:parse_POST("w")
object.f = !!$www:parse_POST("f")
player:tell("Object chmoded.")
elseif ((x = $www:parse_POST("chown")) && x != $su:nn(object.owner))
newowner = $su:match_nn_object(x, object.location, player.user)
valid(newowner) || (newowner = $su:match_player(x, player.user))
if (newowner == object.owner)
"Don't touch it."
elseif (!player.user.wizard)
$msg:mtell("www_error", "Permission denied, only wizards can change the owner.")
elseif (!valid(newowner))
$msg:mtell("www_error", "Couldn't match new owner (" + x + ").")
elseif (!newowner:isa($accountable))
$msg:mtell("www_error", $su:nn(newowner) + " doesn't look like a reasonable owner. Ownership not changed.")
else
player:tell("Chowning object to ", $su:nn(newowner), ".
")
oldowner = object.owner
x = $wiz_utils:set_owner(object, newowner, 1)
if (typeof(x) == $ERR)
$msg:mtell("www_error", tostr("Error during chown (", x, ")."))
elseif (oldowner.wizard == newowner.wizard)
for vnum in [1..length(verbs(object))]
info = verb_info(object, vnum)
if (info[1] == oldowner)
info[1] == newowner
set_verb_info(object, vnum, info)
endif
endfor
"+c props were chowned in $wiz_utils:set_owner"
endif
endif
endif
player:tell("")
this:tell_general(object)
if (index(prepstr, ","))
this:tell_props(object)
this:tell_iprops(object)
elseif (index(prepstr, "."))
this:tell_props(object)
player:tell("View the inherited properties.")
endif
if (index(prepstr, ";"))
this:tell_verbs(object)
this:tell_iverbs(object)
elseif (index(prepstr, ":"))
this:tell_verbs(object)
player:tell("View the inherited verbs.")
endif
index(prepstr, "!") && this:tell_files(object)
endif
this:tell_www_tail(object)
player:tell("")
"Last modified by Dax (#789) on Thu Dec 15 14:45:39 2005 MST."
.