nav
All checks were successful
pyrite-dev/taiga/pipeline/head This commit looks good

This commit is contained in:
Nishi 2026-03-02 21:05:55 +09:00
commit ad15acbce0
Signed by: nishi
GPG key ID: 27EF69B208EB9343
4 changed files with 75 additions and 5 deletions

View file

@ -118,7 +118,7 @@ void classic_stylesheet(FILE* out, const char* top) {
fprintf(out, "}\n");
fprintf(out, "\n");
fprintf(out, ".linkgroup {\n");
fprintf(out, " padding-left: 16px;\n");
fprintf(out, " padding-left: 12px;\n");
fprintf(out, "}\n");
fprintf(out, "\n");
fprintf(out, ".linkgrouptitle {\n");
@ -225,6 +225,20 @@ void classic_body(FILE* out, const char* top, const char* title, xl_node_t* body
fprintf(out, " <tr>\n");
fprintf(out, " <td width=\"150\" valign=\"top\">\n");
fprintf(out, " <div id=\"nav\">\n");
if((nodes = xl_get_path(skinconf->root, "nav")) != NULL) {
int i;
child = nodes[0]->first_child;
while(child != NULL) {
default_nav(out, top, child, 6);
child = child->next;
}
free(nodes);
}
fprintf(out, " </div>\n");
fprintf(out, " </td>\n");
fprintf(out, " <td valign=\"top\">\n");
@ -232,7 +246,7 @@ void classic_body(FILE* out, const char* top, const char* title, xl_node_t* body
child = body->first_child;
while(child != NULL) {
default_node(out, top, child, 0);
default_node(out, top, child, 6);
child = child->next;
}

View file

@ -132,18 +132,58 @@ void default_node(FILE* out, const char* top, xl_node_t* element, int indent) {
sprintf(tag, "<%s>", element->name);
}
if(tag[0] != 0) print(out, tag, indent + 6);
if(tag[0] != 0) print(out, tag, indent);
child = element->first_child;
while(child != NULL) {
if(child->type == XL_NODE_NODE && child->name != NULL) {
default_node(out, top, child, indent + 1 + add);
} else if(child->type == XL_NODE_TEXT && child->text != NULL) {
print(out, child->text, indent + 7 + add);
print(out, child->text, indent + 1 + add);
}
child = child->next;
}
if(end[0] != 0) print(out, end, indent + 6);
if(end[0] != 0) print(out, end, indent);
}
void default_nav(FILE* out, const char* top, xl_node_t* element, int indent) {
int i;
if(element->name == NULL) return;
if(strcmp(element->name, "link") == 0) {
char* link;
char* name;
if((link = xl_get_attribute(element, "href")) == NULL) link = "https://invalid.link";
if((name = xl_get_attribute(element, "name")) == NULL) name = "";
for(i = 0; i < indent; i++) fprintf(out, "\t");
fprintf(out, " - <a href=\"%s\">%s</a><br>", link, name);
} else if(strcmp(element->name, "group") == 0) {
char* title;
xl_node_t* child;
if((title = xl_get_attribute(element, "title")) == NULL) title = "";
if(title != NULL) {
for(i = 0; i < indent; i++) fprintf(out, "\t");
fprintf(out, "<div class=\"linkgrouptitle\"> - %s</div>\n", title);
}
for(i = 0; i < indent; i++) fprintf(out, "\t");
fprintf(out, "<div class=\"linkgroup\">\n");
child = element->first_child;
while(child != NULL) {
default_nav(out, top, child, indent + 1);
child = child->next;
}
for(i = 0; i < indent; i++) fprintf(out, "\t");
fprintf(out, "</div>\n");
}
}

View file

@ -27,6 +27,21 @@ int action_seed(int argc, char** argv) {
fprintf(f, " <link name=\"Example Co, Ltd\" href=\"https://example.com\" />\n");
fprintf(f, " <link name=\"Example Project\" href=\"https://example.com\" />\n");
fprintf(f, " </breadcrumb>\n");
fprintf(f, " <project>\n");
fprintf(f, " <name>Example Project</name>\n");
fprintf(f, " <description>Example Project Description</description>\n");
fprintf(f, " <link href=\"https://example.com\" />\n");
fprintf(f, " </project>\n");
fprintf(f, " <nav>\n");
fprintf(f, " <group title=\"Example Project\">\n");
fprintf(f, " <link name=\"Home\" href=\"/\" />\n");
fprintf(f, " <link name=\"Example Co, Ltd.\" href=\"https://example.com\" />\n");
fprintf(f, " <group title=\"Example Project\">\n");
fprintf(f, " <link name=\"Home\" href=\"/\" />\n");
fprintf(f, " <link name=\"Example Co, Ltd.\" href=\"https://example.com\" />\n");
fprintf(f, " </group>\n");
fprintf(f, " </group>\n");
fprintf(f, " </nav>\n");
fprintf(f, " <copyright>\n");
fprintf(f, " <holder>Example Co, Ltd</holder>\n");
fprintf(f, " <year>2026</year>\n");

View file

@ -63,5 +63,6 @@ void classic_body(FILE* out, const char* top, const char* title, xl_node_t* body
/* default.c */
void default_node(FILE* out, const char* top, xl_node_t* element, int indent);
void default_nav(FILE* out, const char* top, xl_node_t* element, int indent);
#endif