/**
* This is the new handler based leaflet object.
* @author Sandoz, 2002.
*/
inherit OBJECT_OBJ;
private int id, printer_id;
private string size;
/**
* This method returns the raw long description of the leaflet.
*/
string leaflet_long() {
return replace_string( LEAFLET_H->query_leaflet_long(printer_id),
"$size$", size || "average sized" );
} /* leaflet_long() */
/** @ignore yes */
void create() {
do_setup++;
::create();
do_setup--;
if( !do_setup )
TO->setup();
set_long( (: leaflet_long :) );
} /* create() */
/**
* This method queries whether or not we are a leaflet.
* @return always returns 1
*/
int query_leaflet() { return 1; }
/** @ignore yes */
int query_writeable() { return 1; }
/**
* This method returns our text array.
* @return the pages data
*/
mixed query_text() { return LEAFLET_H->query_text(id); }
/** @ignore yes */
mixed query_read_mess() {
mixed mess;
if( id == -1 || !sizeof( mess = query_text() ) )
return ::query_read_mess();
return ({ query_text() }) + ::query_read_mess();
} /* query_read_mess() */
/**
* This method sets the size of the leaflet.
* @param str the size to set us to
*/
void set_leaflet_size( string str ) {
size = str;
} /* set_leaflet_size() */
/**
* This method returns the size of the leaflet.
* @return the size of the leaflet
*/
string query_leaflet_size() { return size; }
/**
* This method sets the id of the leaflet,
* so that we can get our content from the leaflet handler.
* @param i the id to set us to
*/
void set_leaflet_id( int i ) {
id = i;
} /* set_leaflet_id() */
/**
* This method returns the id of the leaflet.
* @return the id of the leaflet
*/
int query_leaflet_id() { return id; }
/**
* This method sets the id of the printer of the leaflet,
* so that we can get our printer name from the leaflet handler.
* @param i the id to set out printer to
*/
void set_printer_id( int i ) {
printer_id = i;
} /* set_printer_id() */
/**
* This method returns the id of the printer of the leaflet.
* @return the id of the printer
*/
int query_printer_id() { return printer_id; }
/**
* This method returns the print shop name who printed us.
* @return the name of out printer
*/
string query_printer_name() {
return LEAFLET_H->query_printer_name( printer_id );
} /* query_printer_name() */
/**
* This method returns the author of the leaflet.
* @return the author of the leaflet
*/
string query_author() { return LEAFLET_H->query_author(id); }
/**
* This method returns the copyright holder of the leaflet.
* @return the copyright holder of the leaflet
*/
string query_copyright() { return LEAFLET_H->query_copyright(id); }
/** @ignore yes */
mapping query_static_auto_load() {
if( base_name(TO) == __FILE__[0..<3] )
return int_query_static_auto_load();
return ([ ]);
} /* query_static_auto_load() */
/** @ignore yes */
mapping query_dynamic_auto_load() {
mapping map;
int tmp;
tmp = id;
id = -1;
map = ([ "::" : ::query_dynamic_auto_load() ]);
id = tmp;
if( id )
map["id"] = id;
if( printer_id )
map["printer id"] = printer_id;
if( size )
map["size"] = size;
return map;
} /* query_dynamic_auto_load() */
/** @ignore yes */
void init_dynamic_arg( mapping map ) {
if( !mapp( map ) )
return;
if( map["::"] )
::init_dynamic_arg( map["::"] );
id = map["id"];
printer_id = map["printer id"];
size = map["size"];
set_long( (: leaflet_long :) );
} /* init_dynamic_arg() */
/** @ignore yes */
string *parse_command_adjectiv_id_list() {
if( size )
return explode( size, " ") + ::parse_command_adjectiv_id_list();
return ::parse_command_adjectiv_id_list();
} /* parse_command_adjectiv_id_list() */
/** @ignore yes */
mixed stats() {
return ::stats() + ({
({ "id", id }),
({ "author", query_author() }),
({ "copyright", query_copyright() }),
({ "printer id", query_printer_id() }),
({ "printed in", query_printer_name() }),
({ "size", query_leaflet_size() }),
});
} /* stats() */